You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by km...@apache.org on 2017/12/28 23:14:24 UTC
svn commit: r1819449 - /spamassassin/branches/3.4/spamc/getopt.c
Author: kmcgrail
Date: Thu Dec 28 23:14:24 2017
New Revision: 1819449
URL: http://svn.apache.org/viewvc?rev=1819449&view=rev
Log:
bug 7524 logic patch for getoptlong issues in spamc
Modified:
spamassassin/branches/3.4/spamc/getopt.c
Modified: spamassassin/branches/3.4/spamc/getopt.c
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/spamc/getopt.c?rev=1819449&r1=1819448&r2=1819449&view=diff
==============================================================================
--- spamassassin/branches/3.4/spamc/getopt.c (original)
+++ spamassassin/branches/3.4/spamc/getopt.c Thu Dec 28 23:14:24 2017
@@ -244,20 +244,26 @@ spamc_getopt_long(int argc, char * const
longoptlen = strlen(longopt) - 2;
if((bp = strchr(longopt, '='))) {
opt = strdup(bp+1);
+ if (opt == NULL) {
+ err(1, NULL);
+ }
longoptlen -= strlen(bp);
}
for(i=0; ; i++) {
/* changed to longopts[i].name[0] == 0 - bug 7148 */
- if((longopts[i].name == NULL) || (longopts[i].name[0] == 0))
- /* free(opt); */ /* Reverting per bug 7524 */
+ if((longopts[i].name == NULL) || (longopts[i].name[0] == 0)) {
+ free(opt);
return(longoptiserr(argc, argv, spamc_optind-1, OPTERRNF));
+ }
if(((strncmp(longopt+2, longopts[i].name, longoptlen)) == 0) && (strlen(longopts[i].name) == longoptlen)) {
*longindex = i;
if(longopts[i].has_arg == required_argument) {
if(((spamc_optind >= argc) || (!argv[spamc_optind]) || (argv[spamc_optind][0] == '-')) &&
- (opt == NULL))
+ (opt == NULL)) {
+ free(opt);
return(longoptiserr(argc, argv, spamc_optind-1, OPTERRARG));
+ }
if(opt != NULL) {
spamc_optarg = opt;
} else {
@@ -273,6 +279,7 @@ spamc_getopt_long(int argc, char * const
}
}
}
+ free(opt);
if(longopts[i].flag == NULL) {
return(longopts[i].val);
} else {