streamts: don't overflow receive buffer, better diag message

This commit is contained in:
Stefan Seyfried
2017-02-12 16:56:10 +01:00
parent 6c46b8fc37
commit ec3201ab04

View File

@@ -371,9 +371,11 @@ bool CStreamManager::Parse(int fd, stream_pids_t &pids, t_channel_id &chid, CFro
bp = &cbuf[0];
/* read one line */
while (bp - &cbuf[0] < (int) sizeof(cbuf)) {
while (bp - &cbuf[0] < (int) sizeof(cbuf) - 1) {
unsigned char c;
int res = read(fd, &c, 1);
if (res == 0)
break;
if (res < 0) {
perror("read");
return false;
@@ -381,12 +383,11 @@ bool CStreamManager::Parse(int fd, stream_pids_t &pids, t_channel_id &chid, CFro
if ((*bp++ = c) == '\n')
break;
}
*bp = 0;
*bp++ = 0;
printf("CStreamManager::Parse: got %d bytes '%s'", (int)(bp-&cbuf[0]), cbuf);
bp = &cbuf[0];
printf("CStreamManager::Parse: got %s\n", cbuf);
/* send response to http client */
if (!strncmp(cbuf, "GET /", 5)) {
fprintf(fp, "HTTP/1.1 200 OK\r\nServer: streamts (%s)\r\n\r\n", "ts" /*&argv[1][1]*/);