crl: refactoring LoadCRL to reduce stack usage:

--- variable name moved to the heap (256 bytes saved)
This commit is contained in:
Moisés Guimarães
2014-07-21 22:42:11 -03:00
parent 3ae9105b05
commit 2245204685

View File

@@ -696,6 +696,11 @@ int LoadCRL(CYASSL_CRL* crl, const char* path, int type, int monitor)
struct dirent* entry; struct dirent* entry;
DIR* dir; DIR* dir;
int ret = SSL_SUCCESS; int ret = SSL_SUCCESS;
#ifdef CYASSL_SMALL_STACK
char* name;
#else
char name[MAX_FILENAME_SZ];
#endif
CYASSL_ENTER("LoadCRL"); CYASSL_ENTER("LoadCRL");
if (crl == NULL) if (crl == NULL)
@@ -706,11 +711,17 @@ int LoadCRL(CYASSL_CRL* crl, const char* path, int type, int monitor)
CYASSL_MSG("opendir path crl load failed"); CYASSL_MSG("opendir path crl load failed");
return BAD_PATH_ERROR; return BAD_PATH_ERROR;
} }
#ifdef CYASSL_SMALL_STACK
name = (char*)XMALLOC(MAX_FILENAME_SZ, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (name == NULL)
return MEMORY_E;
#endif
while ( (entry = readdir(dir)) != NULL) { while ( (entry = readdir(dir)) != NULL) {
char name[MAX_FILENAME_SZ];
struct stat s; struct stat s;
XMEMSET(name, 0, sizeof(name)); XMEMSET(name, 0, MAX_FILENAME_SZ);
XSTRNCPY(name, path, MAX_FILENAME_SZ/2 - 2); XSTRNCPY(name, path, MAX_FILENAME_SZ/2 - 2);
XSTRNCAT(name, "/", 1); XSTRNCAT(name, "/", 1);
XSTRNCAT(name, entry->d_name, MAX_FILENAME_SZ/2); XSTRNCAT(name, entry->d_name, MAX_FILENAME_SZ/2);
@@ -743,6 +754,10 @@ int LoadCRL(CYASSL_CRL* crl, const char* path, int type, int monitor)
} }
} }
#ifdef CYASSL_SMALL_STACK
XFREE(name, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
if (monitor & CYASSL_CRL_MONITOR) { if (monitor & CYASSL_CRL_MONITOR) {
CYASSL_MSG("monitor path requested"); CYASSL_MSG("monitor path requested");