summaryrefslogtreecommitdiffstats
path: root/ports-mgmt
diff options
context:
space:
mode:
authorsem <sem@FreeBSD.org>2004-11-01 21:51:16 +0000
committersem <sem@FreeBSD.org>2004-11-01 21:51:16 +0000
commite2e10acd08bcd6a8d7a3882fb5e04f490ec6f9d3 (patch)
tree04d88fafe3f81c8a1106d2f2a072795fd0935c92 /ports-mgmt
parent162b3563285d985b978ce68f14d075389d8212d2 (diff)
downloadFreeBSD-ports-e2e10acd08bcd6a8d7a3882fb5e04f490ec6f9d3.zip
FreeBSD-ports-e2e10acd08bcd6a8d7a3882fb5e04f490ec6f9d3.tar.gz
Fix portmanager seg faults when an installed port's +CONTENTS file
has no "@comment ORIGIN:" in it. PR: ports/73292 Submitted by: maintainer
Diffstat (limited to 'ports-mgmt')
-rw-r--r--ports-mgmt/portmanager/Makefile2
-rw-r--r--ports-mgmt/portmanager/files/patch-ac74
2 files changed, 75 insertions, 1 deletions
diff --git a/ports-mgmt/portmanager/Makefile b/ports-mgmt/portmanager/Makefile
index b112b5d..be42a2f 100644
--- a/ports-mgmt/portmanager/Makefile
+++ b/ports-mgmt/portmanager/Makefile
@@ -7,7 +7,7 @@
PORTNAME= portmanager
PORTVERSION= 0.2.0
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= sysutils
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= portmanager
diff --git a/ports-mgmt/portmanager/files/patch-ac b/ports-mgmt/portmanager/files/patch-ac
new file mode 100644
index 0000000..4212684
--- /dev/null
+++ b/ports-mgmt/portmanager/files/patch-ac
@@ -0,0 +1,74 @@
+diff -ruN ./libPMGR/src/PMGRrDbCreate.c ../../portmanager-0.2.0/libPMGR/src/PMGRrDbCreate.c
+--- ./libPMGR/src/PMGRrDbCreate.c Thu Aug 12 02:19:05 2004
++++ ../../portmanager-0.2.0/libPMGR/src/PMGRrDbCreate.c Thu Oct 28 15:28:20 2004
+@@ -55,6 +55,7 @@
+ char* portDependencyDir = NULL;
+ char* portDir = NULL;
+ char* portName = NULL;
++ int address = 0;
+ int errorCode = 0;
+ int idx = 0;
+ int portDependencyDirLen = 0;
+@@ -140,10 +141,46 @@
+ }
+ fread( portBuffer, 1, size, portStream );
+ portBuffer[size+1] = 0;
+- portName = strstr( portBuffer, "@name " ) + strlen( "@name " );
+- portNameLen = strstr( portName, "\n" ) - portName;
+- portDir = strstr( portBuffer, "@comment ORIGIN:" ) + strlen( "@comment ORIGIN:" );
+- portDirLen = strstr( portDir, "\n" ) - portDir;
++
++ /* sets portName to start address of portname */
++ /* ver 0.2.0_3 added error checking for @name not found int +CONTENTS file */
++ if( (address = (int)strnstr(portBuffer, "@name ", size)) == 0 )
++ {
++ fprintf( stderr, "%s %s error: \"@name\" not found in %s\n", id, ver, pkg.portDirName );
++ fprintf( stderr, "\t\t%s installation is corrupt!\n", pkg.entry->d_name );
++ fprintf( stderr, "\t\trecomend running \"pkg_delete -f %s\" then manually reinstalling this port\n", pkg.entry->d_name );
++ return(1);
++ }
++ portName = (char*)(address + strlen("@name "));
++
++ if( (address = (int)strnstr(portName, "\n", 256)) == 0 )
++ {
++ fprintf( stderr, "%s %s portName error: \"end of line\" not found in %s\n", id, ver, pkg.portDirName );
++ fprintf( stderr, "\t\t%s installation is corrupt!\n", pkg.entry->d_name );
++ fprintf( stderr, "\t\trecomend running \"pkg_delete -f %s\" then manually reinstalling this port\n", pkg.entry->d_name );
++ return(1);
++ }
++ portNameLen = address - (int)portName;
++
++ if( (address = (int)strnstr(portBuffer, "@comment ORIGIN:", size)) == 0 )
++ {
++ fprintf( stderr, "%s %s error: \"@comment ORIGIN:\" not found in %s\n", id, ver, pkg.portDirName );
++ fprintf( stderr, "\t\t%s installation is corrupt!\n", pkg.entry->d_name );
++ fprintf( stderr, "\t\trecomend running \"pkg_delete -f %s\" then manually reinstalling this port\n", pkg.entry->d_name );
++ return(1);
++ }
++ portDir = (char*)(address + strlen("@comment ORIGIN:"));
++
++
++ if( (address = (int)strnstr(portDir, "\n", 256)) == 0 )
++ {
++ fprintf( stderr, "%s %s portDir error: \"end of line\" not found in %s\n", id, ver, pkg.portDirName );
++ fprintf( stderr, "\t\t%s installation is corrupt!\n", pkg.entry->d_name );
++ fprintf( stderr, "\t\trecomend running \"pkg_delete -f %s\" then manually reinstalling this port\n", pkg.entry->d_name );
++ return(1);
++ }
++ portDirLen = address - (int)portDir;
++
+ portName[portNameLen] = 0;
+ portDir[portDirLen] = 0;
+ fprintf( portIStream, "%s%c%s%c\n", portName, NULL, portDir, NULL );
+diff -ruN ./libPMGR/src/libPMGR.h ../../portmanager-0.2.0/libPMGR/src/libPMGR.h
+--- ./libPMGR/src/libPMGR.h Thu Oct 28 15:33:54 2004
++++ ../../portmanager-0.2.0/libPMGR/src/libPMGR.h Thu Oct 28 15:31:41 2004
+@@ -33,7 +33,7 @@
+ #include <pmupgrade.h>
+
+ #ifndef VER
+-static char ver[] = "0.2.0_2";
++static char ver[] = "0.2.0_3";
+ #define VER 1
+ #endif
+
OpenPOWER on IntegriCloud