diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2004-04-23 21:59:04 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2004-04-23 21:59:04 +0000 |
commit | 613c8a88fbdde3545c6e646595ae2882a3b4f382 (patch) | |
tree | 54978321dc08684db9501a208088858f636eb1ec /src/input/libreal/sdpplin.c | |
parent | e3d2bb8c6813d02dc65bdf8ff4721d0a5b5436bd (diff) | |
download | xine-lib-613c8a88fbdde3545c6e646595ae2882a3b4f382.tar.gz xine-lib-613c8a88fbdde3545c6e646595ae2882a3b4f382.tar.bz2 |
some sanity and bounds checking (my own audit)
lets hope i didn't broke anything
CVS patchset: 6428
CVS date: 2004/04/23 21:59:04
Diffstat (limited to 'src/input/libreal/sdpplin.c')
-rw-r--r-- | src/input/libreal/sdpplin.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/input/libreal/sdpplin.c b/src/input/libreal/sdpplin.c index 5dbff3812..91aa133fa 100644 --- a/src/input/libreal/sdpplin.c +++ b/src/input/libreal/sdpplin.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: sdpplin.c,v 1.4 2003/12/09 00:02:30 f1rmb Exp $ + * $Id: sdpplin.c,v 1.5 2004/04/23 21:59:04 miguelfreitas Exp $ * * sdp/sdpplin parser. * @@ -94,13 +94,19 @@ static char *b64_decode(const char *in, char *out, int *size) static char *nl(char *data) { - return strchr(data,'\n')+1; + char *nlptr = (data) ? strchr(data,'\n') : NULL; + return (nlptr) ? nlptr + 1 : NULL; } static int filter(const char *in, const char *filter, char **out) { int flen=strlen(filter); - int len=strchr(in,'\n')-in; + int len; + + if (!in) + return 0; + + len = (strchr(in,'\n')) ? strchr(in,'\n')-in : strlen(in); if (!strncmp(in,filter,flen)) { @@ -133,7 +139,7 @@ static sdpplin_stream_t *sdpplin_parse_stream(char **data) { } *data=nl(*data); - while (**data && *data[0]!='m') { + while (*data && **data && *data[0]!='m') { handled=0; @@ -232,7 +238,7 @@ sdpplin_t *sdpplin_parse(char *data) { int handled; int len; - while (*data) { + while (data && *data) { handled=0; |