]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
check for embedded \0 in strings for z and s formats
authorGuido van Rossum <guido@python.org>
Fri, 14 Aug 1992 15:12:03 +0000 (15:12 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 14 Aug 1992 15:12:03 +0000 (15:12 +0000)
Python/modsupport.c

index 9f7a5b501fea0ec562ebb931081ba83faf1c0b90..352a5fb7bbf43d9db61c0545f809459444078362 100644 (file)
@@ -206,6 +206,10 @@ do_arg(arg, p_format, p_va)
                        *q = getstringsize(arg);
                        format++;
                }
+               else if (strlen(*p) != getstringsize(arg)) {
+                       err_setstr(ValueError, "embedded '\\0' in string arg");
+                       return 0;
+               }
                break;
                }
        
@@ -225,6 +229,10 @@ do_arg(arg, p_format, p_va)
                                *q = getstringsize(arg);
                        format++;
                }
+               else if (*p != NULL && strlen(*p) != getstringsize(arg)) {
+                       err_setstr(ValueError, "embedded '\\0' in string arg");
+                       return 0;
+               }
                break;
                }
        
@@ -292,8 +300,11 @@ int getargs(va_alist) va_dcl
        va_end(va);
        if (!ok) {
                char buf[256];
-               sprintf(buf, "bad argument list (format '%s')", format);
-               err_setstr(TypeError, buf);
+               if (!err_occurred()) {
+                       sprintf(buf, "bad argument list (format '%s')",
+                               format);
+                       err_setstr(TypeError, buf);
+               }
        }
        return ok;
 }