]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
swf: fix coverity warnings 7003/head
authorVictor Julien <vjulien@oisf.net>
Tue, 15 Feb 2022 06:56:57 +0000 (07:56 +0100)
committerVictor Julien <vjulien@oisf.net>
Tue, 15 Feb 2022 10:14:39 +0000 (11:14 +0100)
*** CID 1499365:    (UNINIT)
/src/util-file-swf-decompression.c: 98 in FileSwfZlibDecompression()
92         infstream.avail_in = (uInt)compressed_data_len;
93         infstream.next_in = (Bytef *)compressed_data;
94         infstream.avail_out = (uInt)decompressed_data_len;
95         infstream.next_out = (Bytef *)decompressed_data;
96
97         inflateInit(&infstream);

>>>     CID 1499365:    (UNINIT)
>>>     Using uninitialized value "infstream.total_out" when calling "inflate".
98         int result = inflate(&infstream, Z_NO_FLUSH);
99         switch(result) {
100             case Z_STREAM_END:
101                 break;
102             case Z_OK:
103                 break;

/src/util-file-swf-decompression.c: 98 in FileSwfZlibDecompression()
92         infstream.avail_in = (uInt)compressed_data_len;
93         infstream.next_in = (Bytef *)compressed_data;
94         infstream.avail_out = (uInt)decompressed_data_len;
95         infstream.next_out = (Bytef *)decompressed_data;
96
97         inflateInit(&infstream);

>>>     CID 1499365:    (UNINIT)
>>>     Using uninitialized value "infstream.total_out" when calling "inflate".
98         int result = inflate(&infstream, Z_NO_FLUSH);
99         switch(result) {
100             case Z_STREAM_END:
101                 break;
102             case Z_OK:
103                 break;

*** CID 1499363:  Error handling issues  (CHECKED_RETURN)
/src/util-file-swf-decompression.c: 97 in FileSwfZlibDecompression()
91
92         infstream.avail_in = (uInt)compressed_data_len;
93         infstream.next_in = (Bytef *)compressed_data;
94         infstream.avail_out = (uInt)decompressed_data_len;
95         infstream.next_out = (Bytef *)decompressed_data;
96
>>>     CID 1499363:  Error handling issues  (CHECKED_RETURN)
>>>     Calling "inflateInit_(&infstream, "1.2.11", 112)" without checking return value. This library function may fail and return an error code.
97         inflateInit(&infstream);
98         int result = inflate(&infstream, Z_NO_FLUSH);
99         switch(result) {
100             case Z_STREAM_END:
101                 break;
102             case Z_OK:

Bug: #5079.

src/util-file-swf-decompression.c

index f0a17918cc8faccdb8f9c6742bc3f4d83fc63608..71ca6eda8699342e2e3ebc21b9ba2dfa932e66ca 100644 (file)
@@ -85,6 +85,7 @@ int FileSwfZlibDecompression(DetectEngineThreadCtx *det_ctx,
 {
     int ret = 1;
     z_stream infstream;
+    memset(&infstream, 0, sizeof(infstream));
     infstream.zalloc = Z_NULL;
     infstream.zfree = Z_NULL;
     infstream.opaque = Z_NULL;
@@ -94,8 +95,13 @@ int FileSwfZlibDecompression(DetectEngineThreadCtx *det_ctx,
     infstream.avail_out = (uInt)decompressed_data_len;
     infstream.next_out = (Bytef *)decompressed_data;
 
-    inflateInit(&infstream);
-    int result = inflate(&infstream, Z_NO_FLUSH);
+    int result = inflateInit(&infstream);
+    if (result != Z_OK) {
+        DetectEngineSetEvent(det_ctx, FILE_DECODER_EVENT_Z_UNKNOWN_ERROR);
+        return 0;
+    }
+
+    result = inflate(&infstream, Z_NO_FLUSH);
     switch(result) {
         case Z_STREAM_END:
             break;