[ 
https://issues.apache.org/jira/browse/PROTON-2772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jiri Daněk updated PROTON-2772:
-------------------------------
    Description: 
There seem to be various mismatched printf format arguments. This is best 
resolved by annotating the string format parameters so that regular compilation 
warns on the mismatches as they happen.

Proton already has some of this, but it is incomplete.

{noformat}
```
/home/jdanek/repos/qpid/qpid-proton/c/src/core/logger.c: In function 
‘pni_logger_log_raw’:
/home/jdanek/repos/qpid/qpid-proton/c/src/core/logger.c:204:41: error: format 
‘%x’ expects argument of type ‘unsigned int’, but argument 4 has type ‘size_t’ 
{aka ‘long unsigned int’} [-Werror=format=]
  204 |     pn_fixed_string_addf(&out, "%04x/%04x: ", i, size);
      |                                      ~~~^        ~~~~
      |                                         |        |
      |                                         |        size_t {aka long 
unsigned int}
      |                                         unsigned int
      |                                      %04lx
cc1: all warnings being treated as errors
```
{noformat}

On windows, we want to enable these optional warning flags

{noformat}
"/analyzer"
"/we6328" # Size mismatch: 'unsigned __int64' passed as _Param_(4) when 'int' 
is required in call to 'ssl_log'.
"/we6340" # Mismatch on sign: 'unsigned __int64' passed as _Param_(4) when some 
signed type is required in call to 'ssl_log'.
{noformat}

  was:
There seem to be various mismatched printf format arguments. This is best 
resolved by annotating the string format parameters so that regular compilation 
warns on the mismatches as they happen.

Proton already has some of this, but it is incomplete.

{noformat}
```
/home/jdanek/repos/qpid/qpid-proton/c/src/core/logger.c: In function 
‘pni_logger_log_raw’:
/home/jdanek/repos/qpid/qpid-proton/c/src/core/logger.c:204:41: error: format 
‘%x’ expects argument of type ‘unsigned int’, but argument 4 has type ‘size_t’ 
{aka ‘long unsigned int’} [-Werror=format=]
  204 |     pn_fixed_string_addf(&out, "%04x/%04x: ", i, size);
      |                                      ~~~^        ~~~~
      |                                         |        |
      |                                         |        size_t {aka long 
unsigned int}
      |                                         unsigned int
      |                                      %04lx
cc1: all warnings being treated as errors
```
{noformat}


> [c] Add parameter safety annotations for printf format strings
> --------------------------------------------------------------
>
>                 Key: PROTON-2772
>                 URL: https://issues.apache.org/jira/browse/PROTON-2772
>             Project: Qpid Proton
>          Issue Type: Improvement
>          Components: proton-c
>    Affects Versions: proton-c-0.39.0
>            Reporter: Jiri Daněk
>            Assignee: Jiri Daněk
>            Priority: Major
>             Fix For: proton-c-0.40.0
>
>
> There seem to be various mismatched printf format arguments. This is best 
> resolved by annotating the string format parameters so that regular 
> compilation warns on the mismatches as they happen.
> Proton already has some of this, but it is incomplete.
> {noformat}
> ```
> /home/jdanek/repos/qpid/qpid-proton/c/src/core/logger.c: In function 
> ‘pni_logger_log_raw’:
> /home/jdanek/repos/qpid/qpid-proton/c/src/core/logger.c:204:41: error: format 
> ‘%x’ expects argument of type ‘unsigned int’, but argument 4 has type 
> ‘size_t’ {aka ‘long unsigned int’} [-Werror=format=]
>   204 |     pn_fixed_string_addf(&out, "%04x/%04x: ", i, size);
>       |                                      ~~~^        ~~~~
>       |                                         |        |
>       |                                         |        size_t {aka long 
> unsigned int}
>       |                                         unsigned int
>       |                                      %04lx
> cc1: all warnings being treated as errors
> ```
> {noformat}
> On windows, we want to enable these optional warning flags
> {noformat}
> "/analyzer"
> "/we6328" # Size mismatch: 'unsigned __int64' passed as _Param_(4) when 'int' 
> is required in call to 'ssl_log'.
> "/we6340" # Mismatch on sign: 'unsigned __int64' passed as _Param_(4) when 
> some signed type is required in call to 'ssl_log'.
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to