From 283f31dd399d839d597fa48ae98dcdccb6188fd7 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Sun, 2 Jun 2024 22:07:02 -0400 Subject: [coverity] language.c lang_load() check bytes read for headers Change-Id: I546f316692c6d0c201d36d3346aab7aab6cc4919 --- apps/language.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'apps') diff --git a/apps/language.c b/apps/language.c index d177303d89..53b7f8aeb5 100644 --- a/apps/language.c +++ b/apps/language.c @@ -70,13 +70,18 @@ int lang_load(const char *filename, const unsigned char *builtin, if(fd < 0) return 1; - read(fd, lang_header, HEADER_SIZE); - if((lang_header[0] == LANGUAGE_COOKIE) && + + if(read(fd, lang_header, HEADER_SIZE) == HEADER_SIZE && + ((lang_header[0] == LANGUAGE_COOKIE) && (lang_header[1] == LANGUAGE_VERSION) && - (lang_header[2] == TARGET_ID)) { + (lang_header[2] == TARGET_ID))) { /* jump to the proper entry in the table of subheaders */ lseek(fd, user_num * SUBHEADER_SIZE, SEEK_CUR); - read(fd, sub_header, SUBHEADER_SIZE); + if (read(fd, sub_header, SUBHEADER_SIZE) != SUBHEADER_SIZE) + { + DEBUGF("Language %s bad subheader %u\n", filename, user_num); + retcode = 4; + } /* read in information about the requested lang */ #if 0 /* unused */ unsigned int num_strings = (sub_header[0]<<8) | sub_header[1]; -- cgit v1.2.3