Skip to content

Commit 68bea06

Browse files
authored
[Fix] enhance param parse for LRB and 3L (#248)
1 parent fd048d9 commit 68bea06

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

libCacheSim/cache/eviction/3LCache/ThreeLCache_Interface.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ static const char *ThreeLCache_current_params(cache_t *cache,
323323
static __thread char params_str[128];
324324
int n = snprintf(params_str, 128, "objective=%s", params->objective);
325325

326-
snprintf(cache->cache_name + n, 128 - n, "\n");
326+
snprintf(params_str + n, 128 - n, "\n");
327327

328328
return params_str;
329329
}
@@ -340,6 +340,13 @@ static void ThreeLCache_parse_params(cache_t *cache,
340340
char *key = strsep((char **)&params_str, "=");
341341
char *value = strsep((char **)&params_str, ",");
342342

343+
if (key == NULL || value == NULL) {
344+
ERROR("invalid parameter format in %s: %s\n", cache->cache_name,
345+
cache_specific_params);
346+
free(original_params_str);
347+
exit(1);
348+
}
349+
343350
// skip the white space
344351
while (params_str != NULL && *params_str == ' ') {
345352
params_str++;

libCacheSim/cache/eviction/LRB/LRB_Interface.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ cache_t *LRB_init(const common_cache_params_t ccache_params,
9595
LRB_params_t *params = my_malloc(LRB_params_t);
9696
cache->eviction_params = params;
9797

98+
params->objective = nullptr;
99+
98100
LRB_parse_params(cache, DEFAULT_PARAMS);
99101
if (cache_specific_params != NULL) {
100102
LRB_parse_params(cache, cache_specific_params);
@@ -311,7 +313,7 @@ static const char *LRB_current_params(cache_t *cache, LRB_params_t *params) {
311313
static __thread char params_str[128];
312314
int n = snprintf(params_str, 128, "objective=%s", params->objective);
313315

314-
snprintf(cache->cache_name + n, 128 - n, "\n");
316+
snprintf(params_str + n, 128 - n, "\n");
315317

316318
return params_str;
317319
}
@@ -328,6 +330,13 @@ static void LRB_parse_params(cache_t *cache,
328330
char *key = strsep((char **)&params_str, "=");
329331
char *value = strsep((char **)&params_str, ",");
330332

333+
if (key == NULL || value == NULL) {
334+
ERROR("invalid parameter format in %s: %s\n", cache->cache_name,
335+
cache_specific_params);
336+
free(original_params_str);
337+
exit(1);
338+
}
339+
331340
// skip the white space
332341
while (params_str != NULL && *params_str == ' ') {
333342
params_str++;

0 commit comments

Comments
 (0)