bpo-36254: Fix invalid uses of %d in format strings in C. (GH-12264)

This commit is contained in:
Serhiy Storchaka 2019-03-13 22:59:55 +02:00 committed by GitHub
parent 10f8ce6688
commit d53fe5f407
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 35 additions and 35 deletions

View File

@ -2388,7 +2388,7 @@ tuplegetter_descr_get(PyObject *self, PyObject *obj, PyObject *type)
return self; return self;
} }
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"descriptor for index '%d' for tuple subclasses " "descriptor for index '%zd' for tuple subclasses "
"doesn't apply to '%s' object", "doesn't apply to '%s' object",
index, index,
obj->ob_type->tp_name); obj->ob_type->tp_name);

View File

@ -165,14 +165,14 @@ static void _CallPythonObject(void *mem,
if (cnv) if (cnv)
dict = PyType_stgdict(cnv); dict = PyType_stgdict(cnv);
else { else {
PrintError("Getting argument converter %d\n", i); PrintError("Getting argument converter %zd\n", i);
goto Done; goto Done;
} }
if (dict && dict->getfunc && !_ctypes_simple_instance(cnv)) { if (dict && dict->getfunc && !_ctypes_simple_instance(cnv)) {
PyObject *v = dict->getfunc(*pArgs, dict->size); PyObject *v = dict->getfunc(*pArgs, dict->size);
if (!v) { if (!v) {
PrintError("create argument %d:\n", i); PrintError("create argument %zd:\n", i);
Py_DECREF(cnv); Py_DECREF(cnv);
goto Done; goto Done;
} }
@ -186,14 +186,14 @@ static void _CallPythonObject(void *mem,
/* Hm, shouldn't we use PyCData_AtAddress() or something like that instead? */ /* Hm, shouldn't we use PyCData_AtAddress() or something like that instead? */
CDataObject *obj = (CDataObject *)_PyObject_CallNoArg(cnv); CDataObject *obj = (CDataObject *)_PyObject_CallNoArg(cnv);
if (!obj) { if (!obj) {
PrintError("create argument %d:\n", i); PrintError("create argument %zd:\n", i);
Py_DECREF(cnv); Py_DECREF(cnv);
goto Done; goto Done;
} }
if (!CDataObject_Check(obj)) { if (!CDataObject_Check(obj)) {
Py_DECREF(obj); Py_DECREF(obj);
Py_DECREF(cnv); Py_DECREF(cnv);
PrintError("unexpected result of create argument %d:\n", i); PrintError("unexpected result of create argument %zd:\n", i);
goto Done; goto Done;
} }
memcpy(obj->b_ptr, *pArgs, dict->size); memcpy(obj->b_ptr, *pArgs, dict->size);
@ -204,7 +204,7 @@ static void _CallPythonObject(void *mem,
} else { } else {
PyErr_SetString(PyExc_TypeError, PyErr_SetString(PyExc_TypeError,
"cannot build parameter"); "cannot build parameter");
PrintError("Parsing argument %d\n", i); PrintError("Parsing argument %zd\n", i);
Py_DECREF(cnv); Py_DECREF(cnv);
goto Done; goto Done;
} }

View File

@ -1131,20 +1131,20 @@ PyObject *_ctypes_callproc(PPROC pProc,
converter = PyTuple_GET_ITEM(argtypes, i); converter = PyTuple_GET_ITEM(argtypes, i);
v = PyObject_CallFunctionObjArgs(converter, arg, NULL); v = PyObject_CallFunctionObjArgs(converter, arg, NULL);
if (v == NULL) { if (v == NULL) {
_ctypes_extend_error(PyExc_ArgError, "argument %d: ", i+1); _ctypes_extend_error(PyExc_ArgError, "argument %zd: ", i+1);
goto cleanup; goto cleanup;
} }
err = ConvParam(v, i+1, pa); err = ConvParam(v, i+1, pa);
Py_DECREF(v); Py_DECREF(v);
if (-1 == err) { if (-1 == err) {
_ctypes_extend_error(PyExc_ArgError, "argument %d: ", i+1); _ctypes_extend_error(PyExc_ArgError, "argument %zd: ", i+1);
goto cleanup; goto cleanup;
} }
} else { } else {
err = ConvParam(arg, i+1, pa); err = ConvParam(arg, i+1, pa);
if (-1 == err) { if (-1 == err) {
_ctypes_extend_error(PyExc_ArgError, "argument %d: ", i+1); _ctypes_extend_error(PyExc_ArgError, "argument %zd: ", i+1);
goto cleanup; /* leaking ? */ goto cleanup; /* leaking ? */
} }
} }

View File

@ -76,7 +76,7 @@ static void more_core(void)
#ifdef MALLOC_CLOSURE_DEBUG #ifdef MALLOC_CLOSURE_DEBUG
printf("block at %p allocated (%d bytes), %d ITEMs\n", printf("block at %p allocated (%d bytes), %d ITEMs\n",
item, count * sizeof(ITEM), count); item, count * (int)sizeof(ITEM), count);
#endif #endif
/* put them into the free list */ /* put them into the free list */
for (i = 0; i < count; ++i) { for (i = 0; i < count; ++i) {

View File

@ -725,7 +725,7 @@ readinto(winconsoleio *self, char *buf, Py_ssize_t len)
if (u8n) { if (u8n) {
PyErr_Format(PyExc_SystemError, PyErr_Format(PyExc_SystemError,
"Buffer had room for %d bytes but %d bytes required", "Buffer had room for %zd bytes but %u bytes required",
len, u8n); len, u8n);
return -1; return -1;
} }

View File

@ -392,7 +392,7 @@ PyLocale_getdefaultlocale(PyObject* self, PyObject *Py_UNUSED(ignored))
char encoding[20]; char encoding[20];
char locale[100]; char locale[100];
PyOS_snprintf(encoding, sizeof(encoding), "cp%d", GetACP()); PyOS_snprintf(encoding, sizeof(encoding), "cp%u", GetACP());
if (GetLocaleInfo(LOCALE_USER_DEFAULT, if (GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SISO639LANGNAME, LOCALE_SISO639LANGNAME,

View File

@ -219,7 +219,7 @@ parse_filter_spec_lzma(PyObject *spec)
if (lzma_lzma_preset(options, preset)) { if (lzma_lzma_preset(options, preset)) {
PyMem_Free(options); PyMem_Free(options);
PyErr_Format(Error, "Invalid compression preset: %d", preset); PyErr_Format(Error, "Invalid compression preset: %u", preset);
return NULL; return NULL;
} }
@ -622,7 +622,7 @@ Compressor_init_alone(lzma_stream *lzs, uint32_t preset, PyObject *filterspecs)
lzma_options_lzma options; lzma_options_lzma options;
if (lzma_lzma_preset(&options, preset)) { if (lzma_lzma_preset(&options, preset)) {
PyErr_Format(Error, "Invalid compression preset: %d", preset); PyErr_Format(Error, "Invalid compression preset: %u", preset);
return -1; return -1;
} }
lzret = lzma_alone_encoder(lzs, &options); lzret = lzma_alone_encoder(lzs, &options);

View File

@ -141,7 +141,7 @@ semlock_acquire(SemLockObject *self, PyObject *args, PyObject *kwds)
default: default:
PyErr_Format(PyExc_RuntimeError, "WaitForSingleObject() or " PyErr_Format(PyExc_RuntimeError, "WaitForSingleObject() or "
"WaitForMultipleObjects() gave unrecognized " "WaitForMultipleObjects() gave unrecognized "
"value %d", res); "value %u", res);
return NULL; return NULL;
} }
} }

View File

@ -3347,7 +3347,7 @@ _ssl__SSLContext__set_alpn_protocols_impl(PySSLContext *self,
#if HAVE_ALPN #if HAVE_ALPN
if ((size_t)protos->len > UINT_MAX) { if ((size_t)protos->len > UINT_MAX) {
PyErr_Format(PyExc_OverflowError, PyErr_Format(PyExc_OverflowError,
"protocols longer than %d bytes", UINT_MAX); "protocols longer than %u bytes", UINT_MAX);
return NULL; return NULL;
} }

View File

@ -520,7 +520,7 @@ binascii_a2b_base64_impl(PyObject *module, Py_buffer *data)
*/ */
PyErr_Format(Error, PyErr_Format(Error,
"Invalid base64-encoded string: " "Invalid base64-encoded string: "
"number of data characters (%d) cannot be 1 more " "number of data characters (%zd) cannot be 1 more "
"than a multiple of 4", "than a multiple of 4",
(bin_data - bin_data_start) / 3 * 4 + 1); (bin_data - bin_data_start) / 3 * 4 + 1);
} else { } else {

View File

@ -4198,7 +4198,7 @@ sock_sendto(PySocketSockObject *s, PyObject *args)
break; break;
default: default:
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"sendto() takes 2 or 3 arguments (%d given)", "sendto() takes 2 or 3 arguments (%zd given)",
arglen); arglen);
return NULL; return NULL;
} }
@ -4741,7 +4741,7 @@ sock_ioctl(PySocketSockObject *s, PyObject *arg)
return PyLong_FromUnsignedLong(recv); } return PyLong_FromUnsignedLong(recv); }
#endif #endif
default: default:
PyErr_Format(PyExc_ValueError, "invalid ioctl command %d", cmd); PyErr_Format(PyExc_ValueError, "invalid ioctl command %lu", cmd);
return NULL; return NULL;
} }
} }

View File

@ -1210,7 +1210,7 @@ PyObject *_PyBytes_DecodeEscape(const char *s,
if (!errors || strcmp(errors, "strict") == 0) { if (!errors || strcmp(errors, "strict") == 0) {
PyErr_Format(PyExc_ValueError, PyErr_Format(PyExc_ValueError,
"invalid \\x escape at position %d", "invalid \\x escape at position %zd",
s - 2 - (end - len)); s - 2 - (end - len));
goto failed; goto failed;
} }

View File

@ -1539,7 +1539,7 @@ odict_init(PyObject *self, PyObject *args, PyObject *kwds)
if (len == -1) if (len == -1)
return -1; return -1;
if (len > 1) { if (len > 1) {
const char *msg = "expected at most 1 arguments, got %d"; const char *msg = "expected at most 1 arguments, got %zd";
PyErr_Format(PyExc_TypeError, msg, len); PyErr_Format(PyExc_TypeError, msg, len);
return -1; return -1;
} }
@ -2213,7 +2213,7 @@ mutablemapping_update(PyObject *self, PyObject *args, PyObject *kwargs)
assert(args == NULL || PyTuple_Check(args)); assert(args == NULL || PyTuple_Check(args));
len = (args != NULL) ? PyTuple_GET_SIZE(args) : 0; len = (args != NULL) ? PyTuple_GET_SIZE(args) : 0;
if (len > 1) { if (len > 1) {
const char *msg = "update() takes at most 1 positional argument (%d given)"; const char *msg = "update() takes at most 1 positional argument (%zd given)";
PyErr_Format(PyExc_TypeError, msg, len); PyErr_Format(PyExc_TypeError, msg, len);
return NULL; return NULL;
} }

View File

@ -195,7 +195,7 @@ structseq_repr(PyStructSequence *obj)
cname = typ->tp_members[i].name; cname = typ->tp_members[i].name;
if (cname == NULL) { if (cname == NULL) {
PyErr_Format(PyExc_SystemError, "In structseq_repr(), member %d name is NULL" PyErr_Format(PyExc_SystemError, "In structseq_repr(), member %zd name is NULL"
" for type %.500s", i, typ->tp_name); " for type %.500s", i, typ->tp_name);
return NULL; return NULL;
} }

View File

@ -718,7 +718,7 @@ invoke_child(wchar_t * executable, wchar_t * suffix, wchar_t * cmdline)
} }
child_command = calloc(child_command_size, sizeof(wchar_t)); child_command = calloc(child_command_size, sizeof(wchar_t));
if (child_command == NULL) if (child_command == NULL)
error(RC_CREATE_PROCESS, L"unable to allocate %d bytes for child command.", error(RC_CREATE_PROCESS, L"unable to allocate %zd bytes for child command.",
child_command_size); child_command_size);
if (no_suffix) if (no_suffix)
_snwprintf_s(child_command, child_command_size, _snwprintf_s(child_command, child_command_size,
@ -1189,7 +1189,7 @@ maybe_handle_shebang(wchar_t ** argv, wchar_t * cmdline)
if (rc == 0) { if (rc == 0) {
read = fread(buffer, sizeof(char), BUFSIZE, fp); read = fread(buffer, sizeof(char), BUFSIZE, fp);
debug(L"maybe_handle_shebang: read %d bytes\n", read); debug(L"maybe_handle_shebang: read %zd bytes\n", read);
fclose(fp); fclose(fp);
if ((read >= 4) && (buffer[3] == '\n') && (buffer[2] == '\r')) { if ((read >= 4) && (buffer[3] == '\n') && (buffer[2] == '\r')) {
@ -1209,7 +1209,7 @@ maybe_handle_shebang(wchar_t ** argv, wchar_t * cmdline)
bom = BOMs; /* points to UTF-8 entry - the default */ bom = BOMs; /* points to UTF-8 entry - the default */
} }
else { else {
debug(L"maybe_handle_shebang: BOM found, code page %d\n", debug(L"maybe_handle_shebang: BOM found, code page %u\n",
bom->code_page); bom->code_page);
start = &buffer[bom->length]; start = &buffer[bom->length];
} }

View File

@ -1103,7 +1103,7 @@ get_locale_encoding(char **locale_encoding)
{ {
#ifdef MS_WINDOWS #ifdef MS_WINDOWS
char encoding[20]; char encoding[20];
PyOS_snprintf(encoding, sizeof(encoding), "cp%d", GetACP()); PyOS_snprintf(encoding, sizeof(encoding), "cp%u", GetACP());
#elif defined(__ANDROID__) || defined(__VXWORKS__) #elif defined(__ANDROID__) || defined(__VXWORKS__)
const char *encoding = "UTF-8"; const char *encoding = "UTF-8";
#else #else

View File

@ -256,7 +256,7 @@ dl_funcptr _PyImport_FindSharedFuncptrWindows(const char *prefix,
This should not happen if called correctly. */ This should not happen if called correctly. */
if (theLength == 0) { if (theLength == 0) {
message = PyUnicode_FromFormat( message = PyUnicode_FromFormat(
"DLL load failed with error code %d", "DLL load failed with error code %u",
errorCode); errorCode);
} else { } else {
/* For some reason a \r\n /* For some reason a \r\n

View File

@ -372,14 +372,14 @@ vgetargs1_impl(PyObject *compat_args, PyObject *const *stack, Py_ssize_t nargs,
if (nargs < min || max < nargs) { if (nargs < min || max < nargs) {
if (message == NULL) if (message == NULL)
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"%.150s%s takes %s %d argument%s (%ld given)", "%.150s%s takes %s %d argument%s (%zd given)",
fname==NULL ? "function" : fname, fname==NULL ? "function" : fname,
fname==NULL ? "" : "()", fname==NULL ? "" : "()",
min==max ? "exactly" min==max ? "exactly"
: nargs < min ? "at least" : "at most", : nargs < min ? "at least" : "at most",
nargs < min ? min : max, nargs < min ? min : max,
(nargs < min ? min : max) == 1 ? "" : "s", (nargs < min ? min : max) == 1 ? "" : "s",
Py_SAFE_DOWNCAST(nargs, Py_ssize_t, long)); nargs);
else else
PyErr_SetString(PyExc_TypeError, message); PyErr_SetString(PyExc_TypeError, message);
return cleanreturn(0, &freelist); return cleanreturn(0, &freelist);
@ -1741,7 +1741,7 @@ vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
else { else {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"%.200s%s takes %s %d positional argument%s" "%.200s%s takes %s %d positional argument%s"
" (%d given)", " (%zd given)",
(fname == NULL) ? "function" : fname, (fname == NULL) ? "function" : fname,
(fname == NULL) ? "" : "()", (fname == NULL) ? "" : "()",
(min != INT_MAX) ? "at most" : "exactly", (min != INT_MAX) ? "at most" : "exactly",
@ -1826,7 +1826,7 @@ vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
if (skip) { if (skip) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"%.200s%s takes %s %d positional argument%s" "%.200s%s takes %s %d positional argument%s"
" (%d given)", " (%zd given)",
(fname == NULL) ? "function" : fname, (fname == NULL) ? "function" : fname,
(fname == NULL) ? "" : "()", (fname == NULL) ? "" : "()",
(Py_MIN(pos, min) < i) ? "at least" : "exactly", (Py_MIN(pos, min) < i) ? "at least" : "exactly",
@ -2194,7 +2194,7 @@ vgetargskeywordsfast_impl(PyObject *const *args, Py_ssize_t nargs,
Py_ssize_t min = Py_MIN(pos, parser->min); Py_ssize_t min = Py_MIN(pos, parser->min);
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"%.200s%s takes %s %d positional argument%s" "%.200s%s takes %s %d positional argument%s"
" (%d given)", " (%zd given)",
(parser->fname == NULL) ? "function" : parser->fname, (parser->fname == NULL) ? "function" : parser->fname,
(parser->fname == NULL) ? "" : "()", (parser->fname == NULL) ? "" : "()",
min < parser->max ? "at least" : "exactly", min < parser->max ? "at least" : "exactly",

View File

@ -2005,7 +2005,7 @@ hamt_node_array_dump(PyHamtNode_Array *node,
goto error; goto error;
} }
if (_hamt_dump_format(writer, "%d::\n", i)) { if (_hamt_dump_format(writer, "%zd::\n", i)) {
goto error; goto error;
} }

View File

@ -160,7 +160,7 @@ PyArena_Free(PyArena *arena)
#if defined(Py_DEBUG) #if defined(Py_DEBUG)
/* /*
fprintf(stderr, fprintf(stderr,
"alloc=%d size=%d blocks=%d block_size=%d big=%d objects=%d\n", "alloc=%zu size=%zu blocks=%zu block_size=%zu big=%zu objects=%zu\n",
arena->total_allocs, arena->total_size, arena->total_blocks, arena->total_allocs, arena->total_size, arena->total_blocks,
arena->total_block_size, arena->total_big_blocks, arena->total_block_size, arena->total_big_blocks,
PyList_Size(arena->a_objects)); PyList_Size(arena->a_objects));