Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 96caaee

Browse files
committed
check for embedded \0 in strings for z and s formats
1 parent 6d946f9 commit 96caaee

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

Python/modsupport.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,10 @@ do_arg(arg, p_format, p_va)
206206
*q = getstringsize(arg);
207207
format++;
208208
}
209+
else if (strlen(*p) != getstringsize(arg)) {
210+
err_setstr(ValueError, "embedded '\\0' in string arg");
211+
return 0;
212+
}
209213
break;
210214
}
211215

@@ -225,6 +229,10 @@ do_arg(arg, p_format, p_va)
225229
*q = getstringsize(arg);
226230
format++;
227231
}
232+
else if (*p != NULL && strlen(*p) != getstringsize(arg)) {
233+
err_setstr(ValueError, "embedded '\\0' in string arg");
234+
return 0;
235+
}
228236
break;
229237
}
230238

@@ -292,8 +300,11 @@ int getargs(va_alist) va_dcl
292300
va_end(va);
293301
if (!ok) {
294302
char buf[256];
295-
sprintf(buf, "bad argument list (format '%s')", format);
296-
err_setstr(TypeError, buf);
303+
if (!err_occurred()) {
304+
sprintf(buf, "bad argument list (format '%s')",
305+
format);
306+
err_setstr(TypeError, buf);
307+
}
297308
}
298309
return ok;
299310
}

0 commit comments

Comments
 (0)