@@ -162,7 +162,11 @@ cgiGetArray(const char *name, /* I - Name of array variable */
162162
163163
164164 if (!_cups_strncasecmp (name , "ENV:" , 4 ))
165- return (getenv (name + 4 ));
165+ {
166+ const char * val = getenv (name + 4 );
167+
168+ return (val ? strdup (val ) : NULL );
169+ }
166170
167171 if ((var = cgi_find_variable (name )) == NULL )
168172 return (NULL );
@@ -1170,10 +1174,12 @@ cgi_initialize_string(const char *data) /* I - Form data string */
11701174 */
11711175
11721176 for (s = name ; * data != '\0' ; data ++ )
1177+ {
11731178 if (* data == '=' )
11741179 break ;
11751180 else if (* data >= ' ' && s < (name + sizeof (name ) - 1 ))
11761181 * s ++ = * data ;
1182+ }
11771183
11781184 * s = '\0' ;
11791185 if (* data == '=' )
@@ -1186,6 +1192,7 @@ cgi_initialize_string(const char *data) /* I - Form data string */
11861192 */
11871193
11881194 for (s = value , done = 0 ; !done && * data != '\0' ; data ++ )
1195+ {
11891196 switch (* data )
11901197 {
11911198 case '&' : /* End of data... */
@@ -1228,6 +1235,7 @@ cgi_initialize_string(const char *data) /* I - Form data string */
12281235 * s ++ = * data ;
12291236 break ;
12301237 }
1238+ }
12311239
12321240 * s = '\0' ; /* nul terminate the string */
12331241
@@ -1247,6 +1255,9 @@ cgi_initialize_string(const char *data) /* I - Form data string */
12471255
12481256 fprintf (stderr , "DEBUG2: cgi_initialize_string: name=\"%s\", value=\"%s\"\n" , name , value );
12491257
1258+ if (!_cups_strncasecmp (name , "ENV:" , 4 ))
1259+ continue ; // Don't allow environment vars to be set
1260+
12501261 if ((s = strrchr (name , '-' )) != NULL && isdigit (s [1 ] & 255 ))
12511262 {
12521263 * s ++ = '\0' ;
0 commit comments