From: hyc Date: Sat, 24 Apr 2010 07:22:32 +0000 (+0000) Subject: Fix: if playpath begins with '?' just use the remainder X-Git-Tag: v2.4~104 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2d8035a20e8446cdf821febc8fda4768ac790906;p=rtmpdump Fix: if playpath begins with '?' just use the remainder git-svn-id: svn://svn.mplayerhq.hu/rtmpdump/trunk@444 400ebc74-4327-4243-bc38-086b20814532 --- diff --git a/rtmpsrv.c b/rtmpsrv.c index 5f980b6..ed2f4ee 100644 --- a/rtmpsrv.c +++ b/rtmpsrv.c @@ -649,7 +649,17 @@ ServeInvoke(STREAMING_SERVER *server, RTMP * r, RTMPPacket *packet, unsigned int /* strip trailing URL parameters */ q = memchr(av.av_val, '?', av.av_len); if (q) - av.av_len = q - av.av_val; + { + if (q == av.av_val) + { + av.av_val++; + av.av_len--; + } + else + { + av.av_len = q - av.av_val; + } + } /* strip leading slash components */ for (p=av.av_val+av.av_len-1; p>=av.av_val; p--) if (*p == '/') diff --git a/rtmpsuck.c b/rtmpsuck.c index dcebac0..c42b31b 100644 --- a/rtmpsuck.c +++ b/rtmpsuck.c @@ -241,7 +241,10 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b r1 = pval.av_val+8; } r2 = strchr(r1, '/'); - len = r2 - r1; + if (r2) + len = r2 - r1; + else + len = pval.av_len - (r1 - pval.av_val); r2 = malloc(len+1); memcpy(r2, r1, len); r2[len] = '\0'; @@ -327,7 +330,17 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b /* strip trailing URL parameters */ q = memchr(av.av_val, '?', av.av_len); if (q) - av.av_len = q - av.av_val; + { + if (q == av.av_val) + { + av.av_val++; + av.av_len--; + } + else + { + av.av_len = q - av.av_val; + } + } /* strip leading slash components */ for (p=av.av_val+av.av_len-1; p>=av.av_val; p--) if (*p == '/')