Fix portmanager seg faults when an installed port's +CONTENTS file
has no "@comment ORIGIN:" in it. PR: ports/73292 Submitted by: maintainer
This commit is contained in:
parent
ee2eef93a9
commit
eda87cdd99
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=120612
4 changed files with 150 additions and 2 deletions
|
@ -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
|
||||
|
|
74
ports-mgmt/portmanager/files/patch-ac
Normal file
74
ports-mgmt/portmanager/files/patch-ac
Normal file
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
74
sysutils/portmanager/files/patch-ac
Normal file
74
sysutils/portmanager/files/patch-ac
Normal file
|
@ -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
|
||||
|
Loading…
Reference in a new issue