check before dereference. Found by PVS-Studio
[freeradius.git] / src / modules / rlm_eap / libeap / eap_tls.c
index 2846e1d..a08cd50 100644 (file)
@@ -325,13 +325,15 @@ static fr_tls_status_t eaptls_verify(eap_handler_t *handler)
        if (prev_eap_ds && prev_eap_ds->response)
                eaptls_prev = (eaptls_packet_t *)prev_eap_ds->response->type.data;
 
-       /*
-        *      First output the flags (for debugging)
-        */
-       RDEBUG3("Peer sent flags %c%c%c",
-               TLS_START(eaptls_packet->flags) ? 'S' : '-',
-               TLS_MORE_FRAGMENTS(eaptls_packet->flags) ? 'M' : '-',
-               TLS_LENGTH_INCLUDED(eaptls_packet->flags) ? 'L' : '-');
+       if (eaptls_packet) {
+               /*
+                *      First output the flags (for debugging)
+                */
+               RDEBUG3("Peer sent flags %c%c%c",
+                       TLS_START(eaptls_packet->flags) ? 'S' : '-',
+                       TLS_MORE_FRAGMENTS(eaptls_packet->flags) ? 'M' : '-',
+                       TLS_LENGTH_INCLUDED(eaptls_packet->flags) ? 'L' : '-');
+       }
 
        /*
         *      check for ACK
@@ -901,19 +903,16 @@ fr_tls_status_t eaptls_process(eap_handler_t *handler)
        status = eaptls_operation(status, handler);
        if (status == FR_TLS_SUCCESS) {
 #define MAX_SESSION_SIZE (256)
-               size_t size;
                VALUE_PAIR *vps;
                char buffer[2 * MAX_SESSION_SIZE + 1];
+
                /*
                 *      Restore the cached VPs before processing the
                 *      application data.
                 */
-               size = tls_session->ssl->session->session_id_length;
-               if (size > MAX_SESSION_SIZE) size = MAX_SESSION_SIZE;
-
-               fr_bin2hex(buffer, tls_session->ssl->session->session_id, size);
+               tls_session_id(tls_session->ssl_session, buffer, MAX_SESSION_SIZE);
 
-               vps = SSL_SESSION_get_ex_data(tls_session->ssl->session, fr_tls_ex_index_vps);
+               vps = SSL_SESSION_get_ex_data(tls_session->ssl_session, fr_tls_ex_index_vps);
                if (!vps) {
                        RWDEBUG("No information in cached session %s", buffer);
                } else {