Steve Dickson wrote on 2020/11/08 5:26:
Hello, I'm getting a build failure on the armv7hl arch and the i686 arch, which do not make much sense. The build is [1] and only those arche are complaining about an sprintf() statement. The rest of the arches are fine with the statment... %99.9 of the arches that are used today... I didn't even realize i686 was still supported! The is the failure: conffile.c: In function 'conf_init_dir': conffile.c:707:22: error: '%s' directive writing between 6 and 2147483645 bytes into a region of size between 4095 and 4096 [-Werror=format-overflow=] 707 | sprintf(fname, "%s/%s", dname, d->d_name); | ^~ In file included from /usr/include/stdio.h:866, from conffile.c:45: /usr/include/bits/stdio2.h:38:10: note: '__sprintf_chk' output 8 or more bytes (assuming 2147483648) into a destination of size 4097 38 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 39 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ So I change the sprintf() to an snprintf() [2] guaranteeing no overflow and I got the same failure. So it is something esoteric about those arches... that I'm missing... Anybody have clue as to what is going on?? tia, steved. [1] https://koji.fedoraproject.org/koji/taskinfo?taskID=55125502 [2] https://koji.fedoraproject.org/koji/taskinfo?taskID=55126237
Not a direct answer, but it seems checking the return value of snprintf() makes -Werror=format-overflow or -Werror=format-truncation happy: https://koji.fedoraproject.org/koji/taskinfo?taskID=55157631 How I've changed is to modify your "0001-conffile-process-config.d-directory-config-files.patch" as: ======================================================================== --- 0001-conffile-process-config.d-directory-config-files.patch.old 2020-11-07 00:32:04.000000000 +0900 +++ 0001-conffile-process-config.d-directory-config-files.patch 2020-11-08 18:40:02.634207926 +0900 @@ -106,7 +106,7 @@ + continue; + + fname_len = strlen(d->d_name); -+ if (!fname_len || (fname_len + dname_len) > PATH_MAX) { ++ if (!fname_len || (snprintf(fname, PATH_MAX + 1, "%s/%s", dname, d->d_name) > PATH_MAX)) { + xlog(L_WARNING, "conf_init_dir: Too long file name: %s in %s", + d->d_name, dname); + continue; @@ -128,7 +128,7 @@ + continue; + } + -+ sprintf(fname, "%s/%s", dname, d->d_name); ++ /*sprintf(fname, "%s/%s", dname, d->d_name);*/ + + if (conf_load_files(trans, fname)) + continue; ======================================================================== Regards, Mamoru _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx