Mercurial > audlegacy-plugins
comparison src/madplug/plugin.c @ 783:83a38bcfe7c8 trunk
[svn] - check the result of vfs_fread() strictly.
author | yaz |
---|---|
date | Mon, 05 Mar 2007 00:48:01 -0800 |
parents | 6f519e34ddf0 |
children | 2461b711162b |
comparison
equal
deleted
inserted
replaced
782:6f519e34ddf0 | 783:83a38bcfe7c8 |
---|---|
222 gint cyc = 0; | 222 gint cyc = 0; |
223 guchar buf[4]; | 223 guchar buf[4]; |
224 guchar tmp[4096]; | 224 guchar tmp[4096]; |
225 gint ret, i; | 225 gint ret, i; |
226 | 226 |
227 if (fin == NULL) | |
228 return 0; | |
229 | |
227 info.remote = FALSE; | 230 info.remote = FALSE; |
228 | 231 |
229 if(audmad_is_remote(filename)) | 232 if(audmad_is_remote(filename)) |
230 info.remote = TRUE; | 233 info.remote = TRUE; |
231 | 234 |
234 if ((ext != NULL) && | 237 if ((ext != NULL) && |
235 (!strcasecmp("flac", ext) || !strcasecmp("mpc", ext) || | 238 (!strcasecmp("flac", ext) || !strcasecmp("mpc", ext) || |
236 !strcasecmp("tta", ext) || !strcasecmp("ogg", ext) || | 239 !strcasecmp("tta", ext) || !strcasecmp("ogg", ext) || |
237 !strcasecmp("wma", ext) ) | 240 !strcasecmp("wma", ext) ) |
238 ) | 241 ) |
239 return FALSE; | 242 return 0; |
240 | 243 |
241 if (fin == NULL) | 244 if(vfs_fread(buf, 1, 4, fin) == 0) |
242 return FALSE; | 245 return 0; |
243 | |
244 vfs_fread(buf, 1, 4, fin); | |
245 | 246 |
246 check = mp3_head_convert(buf); | 247 check = mp3_head_convert(buf); |
247 | 248 |
248 if (memcmp(buf, "ID3", 3) == 0) | 249 if (memcmp(buf, "ID3", 3) == 0) |
249 return 1; | 250 return 1; |
250 else if (memcmp(buf, "OggS", 4) == 0) | 251 else if (memcmp(buf, "OggS", 4) == 0) |
251 return 0; | 252 return 0; |
252 else if (memcmp(buf, "RIFF", 4) == 0) | 253 else if (memcmp(buf, "RIFF", 4) == 0) |
253 { | 254 { |
254 vfs_fseek(fin, 4, SEEK_CUR); | 255 vfs_fseek(fin, 4, SEEK_CUR); |
255 vfs_fread(buf, 1, 4, fin); | 256 if(vfs_fread(buf, 1, 4, fin) == 0) |
257 return 0; | |
256 | 258 |
257 if (memcmp(buf, "RMP3", 4) == 0) | 259 if (memcmp(buf, "RMP3", 4) == 0) |
258 return 1; | 260 return 1; |
259 } | 261 } |
260 | 262 |
261 while (!mp3_head_check(check)) | 263 while (!mp3_head_check(check)) |
262 { | 264 { |
263 ret = vfs_fread(tmp, 1, 4096, fin); | 265 if(vfs_fread(tmp, 1, 4096, fin) == 0) |
264 if (ret == 0) | |
265 return 0; | 266 return 0; |
266 | 267 |
267 for (i = 0; i < ret; i++) | 268 for (i = 0; i < ret; i++) |
268 { | 269 { |
269 check <<= 8; | 270 check <<= 8; |