... | ... |
@@ -59,6 +59,9 @@ |
59 | 59 |
bitpos = 8; \ |
60 | 60 |
bitbuf = (unsigned int) get_c; \ |
61 | 61 |
offset += sizeof(get_c); \ |
62 |
+ } else { \ |
|
63 |
+ cli_errmsg("cli_scanswf: INITBITS: Can't read file\n"); \ |
|
64 |
+ return CL_EREAD; \ |
|
62 | 65 |
} \ |
63 | 66 |
} |
64 | 67 |
|
... | ... |
@@ -73,6 +76,9 @@ |
73 | 73 |
bitbuf = (unsigned int) get_c; \ |
74 | 74 |
bitpos = 8; \ |
75 | 75 |
offset += sizeof(get_c); \ |
76 |
+ } else { \ |
|
77 |
+ cli_errmsg("cli_scanswf: GETBITS: Can't read file\n"); \ |
|
78 |
+ return CL_EREAD; \ |
|
76 | 79 |
} \ |
77 | 80 |
} \ |
78 | 81 |
bitpos -= getbits_n; \ |
... | ... |
@@ -86,10 +92,16 @@ |
86 | 86 |
if(fmap_readn(map, &get_c, offset, sizeof(get_c)) == sizeof(get_c)) { \ |
87 | 87 |
getword_1 = (unsigned int) get_c; \ |
88 | 88 |
offset += sizeof(get_c); \ |
89 |
+ } else { \ |
|
90 |
+ cli_errmsg("cli_scanswf: GETWORD: Can't read file\n"); \ |
|
91 |
+ return CL_EREAD; \ |
|
89 | 92 |
} \ |
90 | 93 |
if(fmap_readn(map, &get_c, offset, sizeof(get_c)) == sizeof(get_c)) { \ |
91 | 94 |
getword_2 = (unsigned int) get_c; \ |
92 | 95 |
offset += sizeof(get_c); \ |
96 |
+ } else { \ |
|
97 |
+ cli_errmsg("cli_scanswf: GETWORD: Can't read file\n"); \ |
|
98 |
+ return CL_EREAD; \ |
|
93 | 99 |
} \ |
94 | 100 |
v = (uint16_t)(getword_1 & 0xff) | ((getword_2 & 0xff) << 8); \ |
95 | 101 |
} |
... | ... |
@@ -124,6 +136,12 @@ static int scancws(cli_ctx *ctx, struct swf_file_hdr *hdr) |
124 | 124 |
hdr->signature[0] = 'F'; |
125 | 125 |
if(cli_writen(fd, hdr, sizeof(struct swf_file_hdr)) != sizeof(struct swf_file_hdr)) { |
126 | 126 |
cli_errmsg("scancws: Can't write to file %s\n", tmpname); |
127 |
+ close(fd); |
|
128 |
+ if(cli_unlink(tmpname)) { |
|
129 |
+ free(tmpname); |
|
130 |
+ return CL_EUNLINK; |
|
131 |
+ } |
|
132 |
+ free(tmpname); |
|
127 | 133 |
return CL_EWRITE; |
128 | 134 |
} |
129 | 135 |
|