mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 12:14:38 +02:00
Merge pull request #2614 from ejohnstown/maintenance-OCSP
Maintenance: OCSP
This commit is contained in:
51
src/wolfio.c
51
src/wolfio.c
@@ -902,7 +902,8 @@ int wolfIO_DecodeUrl(const char* url, int urlSz, char* outName, char* outPath,
|
|||||||
if (url[cur] == '[') {
|
if (url[cur] == '[') {
|
||||||
cur++;
|
cur++;
|
||||||
/* copy until ']' */
|
/* copy until ']' */
|
||||||
while (url[cur] != 0 && url[cur] != ']' && cur < urlSz) {
|
while (i < MAX_URL_ITEM_SIZE-1 && cur < urlSz && url[cur] != 0 &&
|
||||||
|
url[cur] != ']') {
|
||||||
if (outName)
|
if (outName)
|
||||||
outName[i] = url[cur];
|
outName[i] = url[cur];
|
||||||
i++; cur++;
|
i++; cur++;
|
||||||
@@ -910,8 +911,8 @@ int wolfIO_DecodeUrl(const char* url, int urlSz, char* outName, char* outPath,
|
|||||||
cur++; /* skip ']' */
|
cur++; /* skip ']' */
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
while (url[cur] != 0 && url[cur] != ':' &&
|
while (i < MAX_URL_ITEM_SIZE-1 && cur < urlSz && url[cur] != 0 &&
|
||||||
url[cur] != '/' && cur < urlSz) {
|
url[cur] != ':' && url[cur] != '/') {
|
||||||
if (outName)
|
if (outName)
|
||||||
outName[i] = url[cur];
|
outName[i] = url[cur];
|
||||||
i++; cur++;
|
i++; cur++;
|
||||||
@@ -927,9 +928,9 @@ int wolfIO_DecodeUrl(const char* url, int urlSz, char* outName, char* outPath,
|
|||||||
word32 bigPort = 0;
|
word32 bigPort = 0;
|
||||||
i = 0;
|
i = 0;
|
||||||
cur++;
|
cur++;
|
||||||
while (cur < urlSz && url[cur] != 0 && url[cur] != '/' &&
|
while (i < 6 && cur < urlSz && url[cur] != 0 && url[cur] != '/') {
|
||||||
i < 6) {
|
port[i] = url[cur];
|
||||||
port[i++] = url[cur++];
|
i++; cur++;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < i; j++) {
|
for (j = 0; j < i; j++) {
|
||||||
@@ -945,7 +946,7 @@ int wolfIO_DecodeUrl(const char* url, int urlSz, char* outName, char* outPath,
|
|||||||
|
|
||||||
if (cur < urlSz && url[cur] == '/') {
|
if (cur < urlSz && url[cur] == '/') {
|
||||||
i = 0;
|
i = 0;
|
||||||
while (cur < urlSz && url[cur] != 0 && i < MAX_URL_ITEM_SIZE) {
|
while (i < MAX_URL_ITEM_SIZE-1 && cur < urlSz && url[cur] != 0) {
|
||||||
if (outPath)
|
if (outPath)
|
||||||
outPath[i] = url[cur];
|
outPath[i] = url[cur];
|
||||||
i++; cur++;
|
i++; cur++;
|
||||||
@@ -979,6 +980,16 @@ static int wolfIO_HttpProcessResponseBuf(int sfd, byte **recvBuf,
|
|||||||
(void)heap;
|
(void)heap;
|
||||||
(void)dynType;
|
(void)dynType;
|
||||||
|
|
||||||
|
if (chunkSz < 0 || len < 0) {
|
||||||
|
WOLFSSL_MSG("wolfIO_HttpProcessResponseBuf invalid chunk or length size");
|
||||||
|
return MEMORY_E;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newRecvSz <= 0) {
|
||||||
|
WOLFSSL_MSG("wolfIO_HttpProcessResponseBuf new receive size overflow");
|
||||||
|
return MEMORY_E;
|
||||||
|
}
|
||||||
|
|
||||||
newRecvBuf = (byte*)XMALLOC(newRecvSz, heap, dynType);
|
newRecvBuf = (byte*)XMALLOC(newRecvSz, heap, dynType);
|
||||||
if (newRecvBuf == NULL) {
|
if (newRecvBuf == NULL) {
|
||||||
WOLFSSL_MSG("wolfIO_HttpProcessResponseBuf malloc failed");
|
WOLFSSL_MSG("wolfIO_HttpProcessResponseBuf malloc failed");
|
||||||
@@ -995,8 +1006,15 @@ static int wolfIO_HttpProcessResponseBuf(int sfd, byte **recvBuf,
|
|||||||
|
|
||||||
/* copy the remainder of the httpBuf into the respBuf */
|
/* copy the remainder of the httpBuf into the respBuf */
|
||||||
if (len != 0) {
|
if (len != 0) {
|
||||||
XMEMCPY(&newRecvBuf[pos], start, len);
|
if (pos + len <= newRecvSz) {
|
||||||
pos += len;
|
XMEMCPY(&newRecvBuf[pos], start, len);
|
||||||
|
pos += len;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WOLFSSL_MSG("wolfIO_HttpProcessResponseBuf bad size");
|
||||||
|
XFREE(newRecvBuf, heap, dynType);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* receive the remainder of chunk */
|
/* receive the remainder of chunk */
|
||||||
@@ -1089,6 +1107,12 @@ int wolfIO_HttpProcessResponse(int sfd, const char** appStrList,
|
|||||||
|
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case phr_init:
|
case phr_init:
|
||||||
|
if (XSTRLEN(start) < 15) { /* 15 is the length of the two
|
||||||
|
constant strings we're about to
|
||||||
|
compare against. */
|
||||||
|
WOLFSSL_MSG("wolfIO_HttpProcessResponse HTTP header too short.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
if (XSTRNCASECMP(start, "HTTP/1", 6) == 0) {
|
if (XSTRNCASECMP(start, "HTTP/1", 6) == 0) {
|
||||||
start += 9;
|
start += 9;
|
||||||
if (XSTRNCASECMP(start, "200 OK", 6) != 0) {
|
if (XSTRNCASECMP(start, "200 OK", 6) != 0) {
|
||||||
@@ -1101,6 +1125,12 @@ int wolfIO_HttpProcessResponse(int sfd, const char** appStrList,
|
|||||||
case phr_http_start:
|
case phr_http_start:
|
||||||
case phr_have_length:
|
case phr_have_length:
|
||||||
case phr_have_type:
|
case phr_have_type:
|
||||||
|
if (XSTRLEN(start) < 13) { /* 13 is the shortest of the following
|
||||||
|
next lines we're checking for. */
|
||||||
|
WOLFSSL_MSG("wolfIO_HttpProcessResponse content type is too short.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (XSTRNCASECMP(start, "Content-Type:", 13) == 0) {
|
if (XSTRNCASECMP(start, "Content-Type:", 13) == 0) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -1323,7 +1353,8 @@ int EmbedOcspLookup(void* ctx, const char* url, int urlSz,
|
|||||||
if (path == NULL)
|
if (path == NULL)
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
|
|
||||||
domainName = (char*)XMALLOC(MAX_URL_ITEM_SIZE, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
domainName = (char*)XMALLOC(MAX_URL_ITEM_SIZE, NULL,
|
||||||
|
DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
if (domainName == NULL) {
|
if (domainName == NULL) {
|
||||||
XFREE(path, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
XFREE(path, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
|
Reference in New Issue
Block a user