Hi Will, Patch applied. Thanks.
On Fri, Jun 30, 2023 at 12:18 PM William Cohen <wco...@redhat.com> wrote: > Hi, > I was looking through the static analysis results of libpfm and there were > a number of printf statements that are not quite right. One has too many > arguments and others are missing arguments. Attached is a patch that > addresses the following errors in a way that looked reasonable based on > what what was observed in the code > > -Will > > > For the following extra arg one e->fstr is printed on a later line, so I > suspect that the line 87 should just be printing the "]". > > Error: PRINTF_ARGS (CWE-685): [#def66] > libpfm-4.13.0/lib/pfmlib_intel_x86.c:87: extra_argument: This argument was > not used by the format string: "e->fstr". > # 85| __pfm_vbprintf(" any=%d", reg.sel_anythr); > # 86| > # 87|-> __pfm_vbprintf("]", e->fstr); > # 88| > # 89| for (i = 1 ; i < e->count; i++) > > > Below are ones with missing arguments. > > Suspect for the 'DPRINT("%s: ...' ones that the "s: " should be removed > based on other DPRINT examples in the code. > > Error: PRINTF_ARGS (CWE-685): [#def11] > libpfm-4.13.0/lib/pfmlib_amd64_perf_event.c:78: missing_argument: No > argument for format specifier "%d". > # 76| > # 77| if (e->count > 1) { > # 78|-> DPRINT("%s: unsupported count=%d\n", e->count); > # 79| return PFM_ERR_NOTSUPP; > # 80| } > > Following should be printing the name of the pmu, so that should be %s and > printing out p->name. > > Error: PRINTF_ARGS (CWE-685): [#def14] > libpfm-4.13.0/lib/pfmlib_common.c:1151: missing_argument: No argument for > format specifier "%d". > # 1149| > # 1150| if (pfmlib_is_blacklisted_pmu(p)) { > # 1151|-> DPRINT("%d PMU blacklisted, skipping > initialization\n"); > # 1152| continue; > # 1153| } > > Looking through the code probably meaning to print out variable str. > > Error: PRINTF_ARGS (CWE-685): [#def15] > libpfm-4.13.0/lib/pfmlib_common.c:1367: missing_argument: No argument for > format specifier "%s". > # 1365| ainfo->equiv= NULL; > # 1366| if (*endptr) { > # 1367|-> DPRINT("raw umask (%s) is not a > number\n"); > # 1368| return PFM_ERR_ATTR; > # 1369| > > Following looks like it is printing state twice. > > Error: PRINTF_ARGS (CWE-685): [#def34] > libpfm-4.13.0/lib/pfmlib_intel_skx_unc_cha.c:60: missing_argument: No > argument for format specifier "%x". > # 58| f.val = e->codes[1]; > # 59| > # 60|-> __pfm_vbprintf("[UNC_CHA_FILTER0=0x%"PRIx64" thread_id=%d > source=0x%x state=0x%x" > # 61| " state=0x%x]\n", > # 62| f.val, > > Suspect for the 'DPRINT("%s: ...' ones that the "s: " should be removed > based on other DPRINT examples in the code. > > Error: PRINTF_ARGS (CWE-685): [#def83] > libpfm-4.13.0/lib/pfmlib_intel_x86_perf_event.c:100: missing_argument: No > argument for format specifier "%d". > # 98| > # 99| if (e->count > 2) { > # 100|-> DPRINT("%s: unsupported count=%d\n", e->count); > # 101| return PFM_ERR_NOTSUPP; > # 102| } > > > -Will_______________________________________________ > perfmon2-devel mailing list > perfmon2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel >
_______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel