OpenSSL 1.1.1-pre2
This commit is contained in:
+44
-41
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -9,9 +9,9 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "internal/numbers.h"
|
||||
#include "internal/cryptlib.h"
|
||||
#include "internal/ctype.h"
|
||||
#include "internal/numbers.h"
|
||||
#include <openssl/bio.h>
|
||||
|
||||
/*
|
||||
@@ -69,6 +69,7 @@ static int _dopr(char **sbuffer, char **buffer,
|
||||
#define DP_C_LONG 2
|
||||
#define DP_C_LDOUBLE 3
|
||||
#define DP_C_LLONG 4
|
||||
#define DP_C_SIZE 5
|
||||
|
||||
/* Floating point formats */
|
||||
#define F_FORMAT 0
|
||||
@@ -110,7 +111,7 @@ _dopr(char **sbuffer,
|
||||
if (ch == '%')
|
||||
state = DP_S_FLAGS;
|
||||
else
|
||||
if(!doapr_outch(sbuffer, buffer, &currlen, maxlen, ch))
|
||||
if (!doapr_outch(sbuffer, buffer, &currlen, maxlen, ch))
|
||||
return 0;
|
||||
ch = *format++;
|
||||
break;
|
||||
@@ -142,7 +143,7 @@ _dopr(char **sbuffer,
|
||||
}
|
||||
break;
|
||||
case DP_S_MIN:
|
||||
if (isdigit((unsigned char)ch)) {
|
||||
if (ossl_isdigit(ch)) {
|
||||
min = 10 * min + char_to_int(ch);
|
||||
ch = *format++;
|
||||
} else if (ch == '*') {
|
||||
@@ -160,7 +161,7 @@ _dopr(char **sbuffer,
|
||||
state = DP_S_MOD;
|
||||
break;
|
||||
case DP_S_MAX:
|
||||
if (isdigit((unsigned char)ch)) {
|
||||
if (ossl_isdigit(ch)) {
|
||||
if (max < 0)
|
||||
max = 0;
|
||||
max = 10 * max + char_to_int(ch);
|
||||
@@ -187,6 +188,7 @@ _dopr(char **sbuffer,
|
||||
ch = *format++;
|
||||
break;
|
||||
case 'q':
|
||||
case 'j':
|
||||
cflags = DP_C_LLONG;
|
||||
ch = *format++;
|
||||
break;
|
||||
@@ -194,6 +196,10 @@ _dopr(char **sbuffer,
|
||||
cflags = DP_C_LDOUBLE;
|
||||
ch = *format++;
|
||||
break;
|
||||
case 'z':
|
||||
cflags = DP_C_SIZE;
|
||||
ch = *format++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -213,6 +219,9 @@ _dopr(char **sbuffer,
|
||||
case DP_C_LLONG:
|
||||
value = va_arg(args, int64_t);
|
||||
break;
|
||||
case DP_C_SIZE:
|
||||
value = va_arg(args, ossl_ssize_t);
|
||||
break;
|
||||
default:
|
||||
value = va_arg(args, int);
|
||||
break;
|
||||
@@ -238,6 +247,9 @@ _dopr(char **sbuffer,
|
||||
case DP_C_LLONG:
|
||||
value = va_arg(args, uint64_t);
|
||||
break;
|
||||
case DP_C_SIZE:
|
||||
value = va_arg(args, size_t);
|
||||
break;
|
||||
default:
|
||||
value = va_arg(args, unsigned int);
|
||||
break;
|
||||
@@ -281,8 +293,8 @@ _dopr(char **sbuffer,
|
||||
return 0;
|
||||
break;
|
||||
case 'c':
|
||||
if(!doapr_outch(sbuffer, buffer, &currlen, maxlen,
|
||||
va_arg(args, int)))
|
||||
if (!doapr_outch(sbuffer, buffer, &currlen, maxlen,
|
||||
va_arg(args, int)))
|
||||
return 0;
|
||||
break;
|
||||
case 's':
|
||||
@@ -303,27 +315,15 @@ _dopr(char **sbuffer,
|
||||
value, 16, min, max, flags | DP_F_NUM))
|
||||
return 0;
|
||||
break;
|
||||
case 'n': /* XXX */
|
||||
if (cflags == DP_C_SHORT) {
|
||||
short int *num;
|
||||
num = va_arg(args, short int *);
|
||||
*num = currlen;
|
||||
} else if (cflags == DP_C_LONG) { /* XXX */
|
||||
long int *num;
|
||||
num = va_arg(args, long int *);
|
||||
*num = (long int)currlen;
|
||||
} else if (cflags == DP_C_LLONG) { /* XXX */
|
||||
int64_t *num;
|
||||
num = va_arg(args, int64_t *);
|
||||
*num = (int64_t)currlen;
|
||||
} else {
|
||||
case 'n':
|
||||
{
|
||||
int *num;
|
||||
num = va_arg(args, int *);
|
||||
*num = currlen;
|
||||
}
|
||||
break;
|
||||
case '%':
|
||||
if(!doapr_outch(sbuffer, buffer, &currlen, maxlen, ch))
|
||||
if (!doapr_outch(sbuffer, buffer, &currlen, maxlen, ch))
|
||||
return 0;
|
||||
break;
|
||||
case 'w':
|
||||
@@ -354,7 +354,7 @@ _dopr(char **sbuffer,
|
||||
if (*truncated)
|
||||
currlen = *maxlen - 1;
|
||||
}
|
||||
if(!doapr_outch(sbuffer, buffer, &currlen, maxlen, '\0'))
|
||||
if (!doapr_outch(sbuffer, buffer, &currlen, maxlen, '\0'))
|
||||
return 0;
|
||||
*retlen = currlen - 1;
|
||||
return 1;
|
||||
@@ -392,19 +392,19 @@ fmtstr(char **sbuffer,
|
||||
padlen = -padlen;
|
||||
|
||||
while ((padlen > 0) && (max < 0 || cnt < max)) {
|
||||
if(!doapr_outch(sbuffer, buffer, currlen, maxlen, ' '))
|
||||
if (!doapr_outch(sbuffer, buffer, currlen, maxlen, ' '))
|
||||
return 0;
|
||||
--padlen;
|
||||
++cnt;
|
||||
}
|
||||
while (strln > 0 && (max < 0 || cnt < max)) {
|
||||
if(!doapr_outch(sbuffer, buffer, currlen, maxlen, *value++))
|
||||
if (!doapr_outch(sbuffer, buffer, currlen, maxlen, *value++))
|
||||
return 0;
|
||||
--strln;
|
||||
++cnt;
|
||||
}
|
||||
while ((padlen < 0) && (max < 0 || cnt < max)) {
|
||||
if(!doapr_outch(sbuffer, buffer, currlen, maxlen, ' '))
|
||||
if (!doapr_outch(sbuffer, buffer, currlen, maxlen, ' '))
|
||||
return 0;
|
||||
++padlen;
|
||||
++cnt;
|
||||
@@ -472,19 +472,19 @@ fmtint(char **sbuffer,
|
||||
|
||||
/* spaces */
|
||||
while (spadlen > 0) {
|
||||
if(!doapr_outch(sbuffer, buffer, currlen, maxlen, ' '))
|
||||
if (!doapr_outch(sbuffer, buffer, currlen, maxlen, ' '))
|
||||
return 0;
|
||||
--spadlen;
|
||||
}
|
||||
|
||||
/* sign */
|
||||
if (signvalue)
|
||||
if(!doapr_outch(sbuffer, buffer, currlen, maxlen, signvalue))
|
||||
if (!doapr_outch(sbuffer, buffer, currlen, maxlen, signvalue))
|
||||
return 0;
|
||||
|
||||
/* prefix */
|
||||
while (*prefix) {
|
||||
if(!doapr_outch(sbuffer, buffer, currlen, maxlen, *prefix))
|
||||
if (!doapr_outch(sbuffer, buffer, currlen, maxlen, *prefix))
|
||||
return 0;
|
||||
prefix++;
|
||||
}
|
||||
@@ -492,7 +492,7 @@ fmtint(char **sbuffer,
|
||||
/* zeros */
|
||||
if (zpadlen > 0) {
|
||||
while (zpadlen > 0) {
|
||||
if(!doapr_outch(sbuffer, buffer, currlen, maxlen, '0'))
|
||||
if (!doapr_outch(sbuffer, buffer, currlen, maxlen, '0'))
|
||||
return 0;
|
||||
--zpadlen;
|
||||
}
|
||||
@@ -758,8 +758,8 @@ fmtfp(char **sbuffer,
|
||||
return 0;
|
||||
|
||||
while (fplace > 0) {
|
||||
if(!doapr_outch(sbuffer, buffer, currlen, maxlen,
|
||||
fconvert[--fplace]))
|
||||
if (!doapr_outch(sbuffer, buffer, currlen, maxlen,
|
||||
fconvert[--fplace]))
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -805,11 +805,13 @@ static int
|
||||
doapr_outch(char **sbuffer,
|
||||
char **buffer, size_t *currlen, size_t *maxlen, int c)
|
||||
{
|
||||
/* If we haven't at least one buffer, someone has doe a big booboo */
|
||||
OPENSSL_assert(*sbuffer != NULL || buffer != NULL);
|
||||
/* If we haven't at least one buffer, someone has done a big booboo */
|
||||
if (!ossl_assert(*sbuffer != NULL || buffer != NULL))
|
||||
return 0;
|
||||
|
||||
/* |currlen| must always be <= |*maxlen| */
|
||||
OPENSSL_assert(*currlen <= *maxlen);
|
||||
if (!ossl_assert(*currlen <= *maxlen))
|
||||
return 0;
|
||||
|
||||
if (buffer && *currlen == *maxlen) {
|
||||
if (*maxlen > INT_MAX - BUFFER_INC)
|
||||
@@ -821,7 +823,8 @@ doapr_outch(char **sbuffer,
|
||||
if (*buffer == NULL)
|
||||
return 0;
|
||||
if (*currlen > 0) {
|
||||
OPENSSL_assert(*sbuffer != NULL);
|
||||
if (!ossl_assert(*sbuffer != NULL))
|
||||
return 0;
|
||||
memcpy(*buffer, *sbuffer, *currlen);
|
||||
}
|
||||
*sbuffer = NULL;
|
||||
@@ -856,7 +859,7 @@ int BIO_printf(BIO *bio, const char *format, ...)
|
||||
ret = BIO_vprintf(bio, format, args);
|
||||
|
||||
va_end(args);
|
||||
return (ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int BIO_vprintf(BIO *bio, const char *format, va_list args)
|
||||
@@ -883,7 +886,7 @@ int BIO_vprintf(BIO *bio, const char *format, va_list args)
|
||||
} else {
|
||||
ret = BIO_write(bio, hugebuf, (int)retlen);
|
||||
}
|
||||
return (ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -902,7 +905,7 @@ int BIO_snprintf(char *buf, size_t n, const char *format, ...)
|
||||
ret = BIO_vsnprintf(buf, n, format, args);
|
||||
|
||||
va_end(args);
|
||||
return (ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
|
||||
@@ -910,7 +913,7 @@ int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
|
||||
size_t retlen;
|
||||
int truncated;
|
||||
|
||||
if(!_dopr(&buf, NULL, &n, &retlen, &truncated, format, args))
|
||||
if (!_dopr(&buf, NULL, &n, &retlen, &truncated, format, args))
|
||||
return -1;
|
||||
|
||||
if (truncated)
|
||||
|
||||
Reference in New Issue
Block a user