]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Avoid NULL string in printf on EAP method names in authenticator
authorEytan Lifshitz <eytan.lifshitz@intel.com>
Mon, 19 Jan 2015 04:56:43 +0000 (23:56 -0500)
committerJouni Malinen <j@w1.fi>
Tue, 20 Jan 2015 00:07:22 +0000 (02:07 +0200)
In ieee802_1x_decapsulate_radius(), eap_server_get_name() may return
NULL, and it could be dereferenced depending on printf implementation.
Change it to return "unknown" instead for the case of no matching EAP
method found. This makes it easier for the callers to simply print this
in logs (which is the only use for this function).

Signed-off-by: Eytan Lifshitz <eytan.lifshitz@intel.com>
src/ap/ieee802_1x.c
src/eap_server/eap_server_methods.c

index f11a405d1ef2c8dec5c22a5e51881836be8cc05e..9d257cc3c0d93be0b0524a31d694485e6ff5146a 100644 (file)
@@ -1211,15 +1211,11 @@ static void ieee802_1x_decapsulate_radius(struct hostapd_data *hapd,
                if (eap_type >= 0)
                        sm->eap_type_authsrv = eap_type;
                os_snprintf(buf, sizeof(buf), "EAP-Request-%s (%d)",
-                           eap_type >= 0 ? eap_server_get_name(0, eap_type) :
-                           "??",
-                           eap_type);
+                           eap_server_get_name(0, eap_type), eap_type);
                break;
        case EAP_CODE_RESPONSE:
                os_snprintf(buf, sizeof(buf), "EAP Response-%s (%d)",
-                           eap_type >= 0 ? eap_server_get_name(0, eap_type) :
-                           "??",
-                           eap_type);
+                           eap_server_get_name(0, eap_type), eap_type);
                break;
        case EAP_CODE_SUCCESS:
                os_strlcpy(buf, "EAP Success", sizeof(buf));
@@ -2502,10 +2498,8 @@ int ieee802_1x_get_mib_sta(struct hostapd_data *hapd, struct sta_info *sta,
        ret = os_snprintf(buf + len, buflen - len,
                          "last_eap_type_as=%d (%s)\n"
                          "last_eap_type_sta=%d (%s)\n",
-                         sm->eap_type_authsrv,
-                         name1 ? name1 : "",
-                         sm->eap_type_supp,
-                         name2 ? name2 : "");
+                         sm->eap_type_authsrv, name1,
+                         sm->eap_type_supp, name2);
        if (os_snprintf_error(buflen - len, ret))
                return len;
        len += ret;
index 0209fad639479280eac8fb754c764bb797ff34d5..9e9dc934eb776e389cd9ad3d119dad69aca6530b 100644 (file)
@@ -153,7 +153,7 @@ void eap_server_unregister_methods(void)
  * eap_server_get_name - Get EAP method name for the given EAP type
  * @vendor: EAP Vendor-Id (0 = IETF)
  * @type: EAP method type
- * Returns: EAP method name, e.g., TLS, or %NULL if not found
+ * Returns: EAP method name, e.g., TLS, or "unknown" if not found
  *
  * This function maps EAP type numbers into EAP type names based on the list of
  * EAP methods included in the build.
@@ -167,5 +167,5 @@ const char * eap_server_get_name(int vendor, EapType type)
                if (m->vendor == vendor && m->method == type)
                        return m->name;
        }
-       return NULL;
+       return "unknown";
 }