mirror of
https://gitee.com/openharmony/third_party_libsnd
synced 2025-02-22 11:52:51 +00:00
src/sd2.c : Be a little more lax in what is acceptable.
This commit is contained in:
parent
80d10955dc
commit
893a48ae5d
19
src/sd2.c
19
src/sd2.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** Copyright (C) 2001-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
|
||||
** Copyright (C) 2001-2007 Erik de Castro Lopo <erikd@mega-nerd.com>
|
||||
** Copyright (C) 2004 Paavo Jumppanen
|
||||
**
|
||||
** This program is free software; you can redistribute it and/or modify
|
||||
@ -533,9 +533,9 @@ parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc)
|
||||
psf_log_printf (psf, "Finding parameters :\n") ;
|
||||
|
||||
str_offset = rsrc->string_offset ;
|
||||
psf_log_printf (psf, " Name Offset RsrcId dlen slen Value\n") ;
|
||||
psf_log_printf (psf, " Name Offset RsrcId dlen slen Value\n") ;
|
||||
|
||||
for (k = 0 ; k < rsrc->str_count ; k++)
|
||||
for (k = 0 ; k < rsrc->str_count + 2 ; k++)
|
||||
{ int slen ;
|
||||
|
||||
slen = read_char (rsrc->rsrc_data, str_offset) ;
|
||||
@ -547,19 +547,19 @@ parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc)
|
||||
data_offset = rsrc->data_offset + read_int (rsrc->rsrc_data, rsrc->item_offset + k * 12 + 4) ;
|
||||
if (data_offset < 0 || data_offset > rsrc->rsrc_len)
|
||||
{ psf_log_printf (psf, "Bad data offset (%d)\n", data_offset) ;
|
||||
return SFE_SD2_BAD_DATA_OFFSET ;
|
||||
break ;
|
||||
} ;
|
||||
|
||||
data_len = read_int (rsrc->rsrc_data, data_offset) ;
|
||||
if (data_len < 0 || data_len > rsrc->rsrc_len)
|
||||
{ psf_log_printf (psf, "Bad data length (%d).\n", data_len) ;
|
||||
return SFE_SD2_BAD_RSRC ;
|
||||
break ;
|
||||
} ;
|
||||
|
||||
slen = read_char (rsrc->rsrc_data, data_offset + 4) ;
|
||||
read_str (rsrc->rsrc_data, data_offset + 5, value, SF_MIN (SIGNED_SIZEOF (value), slen + 1)) ;
|
||||
|
||||
psf_log_printf (psf, " %-12s 0x%04x %4d %2d %2d '%s'\n", name, data_offset, rsrc_id, data_len, slen, value) ;
|
||||
psf_log_printf (psf, " %-12s 0x%04x %4d %3d %3d '%s'\n", name, data_offset, rsrc_id, data_len, slen, value) ;
|
||||
|
||||
if (strcmp (name, "sample-size") == 0 && rsrc->sample_size == 0)
|
||||
rsrc->sample_size = strtol (value, NULL, 10) ;
|
||||
@ -615,10 +615,3 @@ parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc)
|
||||
return 0 ;
|
||||
} /* parse_str_rsrc */
|
||||
|
||||
/*
|
||||
** Do not edit or modify anything in this comment block.
|
||||
** The arch-tag line is a file identity tag for the GNU Arch
|
||||
** revision control system.
|
||||
**
|
||||
** arch-tag: 1ee183e5-6b9f-4c2c-bd0a-24f35595cefc
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user