From 3e37013218781f92ecacdfc01f1b958491a31d6b Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Tue, 17 Aug 2021 08:28:23 -0400 Subject: [PATCH] misc.c strip_extension() cleanup optimize + add some error checking of inputO Change-Id: I88c476f5fa66847adc0b361df1a0dd4818dbfdc6 --- apps/misc.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/apps/misc.c b/apps/misc.c index 293154c942..7da86930ba 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -864,27 +864,17 @@ char* strrsplt(char* str, int c) */ char *strip_extension(char* buffer, int buffer_size, const char *filename) { - char *dot = strrchr(filename, '.'); - int len; - - if (buffer_size <= 0) + if (!buffer || !filename || buffer_size <= 0) { return NULL; } - buffer_size--; /* Make room for end nil */ + off_t dotpos = (strrchr(filename, '.') - filename) + 1; - if (dot != 0 && filename[0] != '.') - { - len = dot - filename; - len = MIN(len, buffer_size); - } - else - { - len = buffer_size; - } - - strlcpy(buffer, filename, len + 1); + /* no match on filename beginning with '.' or beyond buffer_size */ + if(dotpos > 1 && dotpos < buffer_size) + buffer_size = dotpos; + strlcpy(buffer, filename, buffer_size); return buffer; }