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

Reply via email to