diff options
author | Alan Coopersmith <alan.coopersmith@oracle.com> | 2022-12-17 12:23:45 -0800 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@oracle.com> | 2023-01-12 15:47:43 -0800 |
commit | a3a7c6dcc3b629d765014816c566c63165c63ca8 (patch) | |
tree | 8c29786703ebe2357dd211cd8aeee749cb1b5714 /src | |
parent | f7a167a48a950b89b91f5123a0ec8d9a7cb97495 (diff) |
Fix CVE-2022-46285: Infinite loop on unclosed comments
When reading XPM images from a file with libXpm 3.5.14 or older, if a
comment in the file is not closed (i.e. a C-style comment starts with
"/*" and is missing the closing "*/"), the ParseComment() function will
loop forever calling getc() to try to read the rest of the comment,
failing to notice that it has returned EOF, which may cause a denial of
service to the calling program.
Reported-by: Marco Ivaldi <raptor@0xdeadbeef.info>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/data.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -174,6 +174,10 @@ ParseComment(xpmData *data) notend = 0; Ungetc(data, *s, file); } + else if (c == EOF) { + /* hit end of file before the end of the comment */ + return XpmFileInvalid; + } } return 0; } |