diff options
author | Maksim Yevmenkin <emax@FreeBSD.org> | 2007-11-16 15:13:12 +0000 |
---|---|---|
committer | Maksim Yevmenkin <emax@FreeBSD.org> | 2007-11-16 15:13:12 +0000 |
commit | 1f3e4b39fdebacf620c0351bdd12afafa648ee86 (patch) | |
tree | d633a06901e49ab684b62277c1a64c1d59541d2b /lib/libsdp/search.c | |
parent | 0e0d8d5a75f7c78f104163e245e57c58ee009ea2 (diff) | |
download | src-1f3e4b39fdebacf620c0351bdd12afafa648ee86.tar.gz src-1f3e4b39fdebacf620c0351bdd12afafa648ee86.zip |
Fix bug in handling SDP continuation state.
Reported by: Eric Millbrandt emillbrandt at coldhaus dot com
MFC after: 3 days
Notes
Notes:
svn path=/head/; revision=173673
Diffstat (limited to 'lib/libsdp/search.c')
-rw-r--r-- | lib/libsdp/search.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/libsdp/search.c b/lib/libsdp/search.c index 54ac3a40f6ba..868fbe562ffe 100644 --- a/lib/libsdp/search.c +++ b/lib/libsdp/search.c @@ -204,15 +204,18 @@ sdp_search(void *xss, return (-1); } + rsp += xpdu.len; + ss->tid ++; + /* Save continuation state (if any) */ - ss->cslen = rsp[xpdu.len]; + ss->cslen = rsp[0]; if (ss->cslen > 0) { if (ss->cslen > sizeof(ss->cs)) { ss->error = ENOBUFS; return (-1); } - memcpy(ss->cs, rsp + xpdu.len + 1, ss->cslen); + memcpy(ss->cs, rsp + 1, ss->cslen); /* * Ensure that we always have ss->imtu bytes @@ -236,9 +239,6 @@ sdp_search(void *xss, rsp = ss->rsp + offset; } } - - rsp += xpdu.len; - ss->tid ++; } while (ss->cslen > 0); /* |