--- luaDetectorApi.c.orig 2014-03-09 18:35:09.650653721 -0700 +++ luaDetectorApi.c 2014-03-19 18:23:49.369865903 -0700 @@ -106,7 +106,7 @@ #ifdef LUA_DETECTOR_DEBUG _dpd.debugMsg(DEBUG_LOG,"DetectorUserData %p: allocated\n\n",bar); #endif - bzero(bar, sizeof(*bar)); + memset(bar, 0, sizeof(*bar)); /* bzero() deprecated, replaced with memset() */ if ((bar->pDetector = (Detector *)calloc(1, sizeof(Detector))) == NULL) { @@ -2069,6 +2069,11 @@ return 0; } hostPattern = (u_int8_t *)strdup(tmpString); + if (!hostPattern) + { + _dpd.errMsg( "Invalue host pattern string."); + return 0; + } /* Verify that path pattern is a valid string */ size_t pathPatternSize = 0; @@ -2081,6 +2086,12 @@ return 0; } pathPattern = (u_int8_t *)strdup(tmpString); + if (!pathPattern) + { + _dpd.errMsg( "Invalid path pattern string."); + free(hostPattern); + return 0; + } /* Verify that scheme pattern is a valid string */ size_t schemePatternSize; @@ -2094,6 +2105,13 @@ return 0; } schemePattern = (u_int8_t*) strdup(tmpString); + if (!schemePattern) + { + _dpd.errMsg ( "Invalid scheme pattern string,"); + free(pathPattern); + free(hostPattern); + return 0; + } /* Verify that query pattern is a valid string */ size_t queryPatternSize; @@ -2102,6 +2120,13 @@ if(tmpString && queryPatternSize) { queryPattern = (u_int8_t*) strdup(tmpString); + if (!queryPattern) + { + _dpd.errMsg( "Invalid query pattern string."); + free(pathPattern); + free(hostPattern); + return 0; + } } u_int32_t appId = lua_tointeger(L, index++); @@ -2452,6 +2477,11 @@ return 0; } hostPattern = (u_int8_t *)strdup(tmpString); + if (!hostPattern) + { + _dpd.errMsg( "Inavlue host pattern string."); + return 0; + } /* Verify that path pattern is a valid string */ size_t pathPatternSize = 0; @@ -2464,6 +2494,12 @@ return 0; } pathPattern = (u_int8_t *)strdup(tmpString); + if (!pathPattern) + { + _dpd.errMsg( "Inavlid path pattern string."); + free(hostPattern); + return 0; + } /* Verify that scheme pattern is a valid string */ size_t schemePatternSize; @@ -2477,6 +2513,13 @@ return 0; } schemePattern = (u_int8_t*) strdup(tmpString); + if (!schemePattern) + { + _dpd.errMsg ("Invalid scheme pattern string."); + free(pathPattern); + free(hostPattern); + return 0; + } /* Allocate memory for data structures */ DetectorAppUrlPattern *pattern = malloc(sizeof(DetectorAppUrlPattern));