]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: ssl_sock: fix null dereference for QUIC build
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 17 Oct 2022 16:46:49 +0000 (18:46 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 17 Oct 2022 16:58:09 +0000 (18:58 +0200)
A previous commit tries to fix uninitialized GCC warning on ssl code for
QUIC build. See the fix here :
  48e46f98ccf97427995eb41c6f28cc38705bdd7e
  BUILD: ssl_sock: bind_conf uninitialized in ssl_sock_bind_verifycbk()

However, this is incomplete as it still reports possible NULL
dereference on ctx variable (GCC v12.2.0). Here is the compilation
result :

  src/ssl_sock.c: In function ‘ssl_sock_bind_verifycbk’:
  src/ssl_sock.c:1739:12: error: potential null pointer dereference [-Werror=null-dereference]
   1739 |         ctx->xprt_st |= SSL_SOCK_ST_FL_VERIFY_DONE;
        |

To fix this, remove check on qc which can also never happens and replace
it with a BUG_ON. This seems to satisfy GCC on my machine.

This must be backported up to 2.6.

src/ssl_sock.c

index fbf4ee6a35db79fac52ae5bb8217768947fde359..4a16f6f0ccb410b61c8484b1ff052ee49ee33737 100644 (file)
@@ -1727,10 +1727,9 @@ int ssl_sock_bind_verifycbk(int ok, X509_STORE_CTX *x_store)
 #ifdef USE_QUIC
        else {
                qc = SSL_get_ex_data(ssl, ssl_qc_app_data_index);
-               if (qc) {
-                       bind_conf = qc->li->bind_conf;
-                       ctx = qc->xprt_ctx;
-               }
+               BUG_ON(!qc); /* Must never happen */
+               bind_conf = qc->li->bind_conf;
+               ctx = qc->xprt_ctx;
        }
 #endif