convert BIO_snprintf to snprintf
authorbeck <beck@openbsd.org>
Tue, 15 Apr 2014 20:14:23 +0000 (20:14 +0000)
committerbeck <beck@openbsd.org>
Tue, 15 Apr 2014 20:14:23 +0000 (20:14 +0000)
ok deraadt@ tedu@

lib/libssl/src/apps/s_client.c

index 87fd958..e9840dd 100644 (file)
@@ -230,11 +230,15 @@ static unsigned int psk_client_cb(SSL *ssl, const char *hint, char *identity,
        unsigned int max_psk_len)
        {
        unsigned int psk_len = 0;
+       size_t maxlen = 0;
        int ret;
         BIGNUM *bn=NULL;
 
        if (c_debug)
                BIO_printf(bio_c_out, "psk_client_cb\n");
+       if (max_identity_len > INT_MAX)
+               goto out_err;
+       maxlen = max_identity_len;
        if (!hint)
                 {
                 /* no ServerKeyExchange message*/
@@ -245,8 +249,8 @@ static unsigned int psk_client_cb(SSL *ssl, const char *hint, char *identity,
                BIO_printf(bio_c_out, "Received PSK identity hint '%s'\n", hint);
 
        /* lookup PSK identity and PSK key based on the given identity hint here */
-       ret = BIO_snprintf(identity, max_identity_len, "%s", psk_identity);
-       if (ret < 0 || (unsigned int)ret > max_identity_len)
+       ret = snprintf(identity, maxlen, "%s", psk_identity);
+       if (ret == -1 || ret >= maxlen)
                goto out_err;
        if (c_debug)
                BIO_printf(bio_c_out, "created identity '%s' len=%d\n", identity, ret);