in 1.62.2, bump PKGREVISION The reason I'm not updating to 1.62.2 yet is that it triggers problems with NetBSD's iconv(3) (WCHAR_T doesn't work), and that it doesn't create id3v1 tags anymore per default which many programs want.
98 lines
3.7 KiB
Text
98 lines
3.7 KiB
Text
$NetBSD: patch-ab,v 1.1 2007/08/14 21:41:06 drochner Exp $
|
|
|
|
--- lib/http.c.orig 2006-08-25 04:01:49.000000000 +0200
|
|
+++ lib/http.c
|
|
@@ -258,11 +258,11 @@ httplib_construct_page_request (const ch
|
|
|
|
/* Return 1 if a match was found, 0 if not found */
|
|
int
|
|
-extract_header_value (char *header, char *dest, char *match)
|
|
+extract_header_value (char *header, char *dest, char *match, int maxlen)
|
|
{
|
|
char* start = (char *)strstr(header, match);
|
|
if (start) {
|
|
- subnstr_until(start+strlen(match), "\n", dest, MAX_ICY_STRING);
|
|
+ subnstr_until(start+strlen(match), "\n", dest, maxlen);
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
@@ -321,24 +321,32 @@ httplib_parse_sc_header (const char *url
|
|
}
|
|
|
|
// read generic headers
|
|
- extract_header_value(header, info->http_location, "Location:");
|
|
- extract_header_value(header, info->server, "Server:");
|
|
- rc = extract_header_value(header, info->icy_name, "icy-name:");
|
|
+ extract_header_value(header, info->http_location, "Location:",
|
|
+ sizeof(info->http_location));
|
|
+ extract_header_value(header, info->server, "Server:",
|
|
+ sizeof(info->server));
|
|
+ rc = extract_header_value(header, info->icy_name, "icy-name:",
|
|
+ sizeof(info->icy_name));
|
|
if (rc == 0) {
|
|
/* Icecast 2.0.1 */
|
|
- rc = extract_header_value(header, info->icy_name, "ice-name:");
|
|
+ rc = extract_header_value(header, info->icy_name, "ice-name:",
|
|
+ sizeof(info->icy_name));
|
|
}
|
|
info->have_icy_name = rc;
|
|
- extract_header_value(header, info->icy_url, "icy-url:");
|
|
- rc = extract_header_value(header, stempbr, "icy-br:");
|
|
+ extract_header_value(header, info->icy_url, "icy-url:",
|
|
+ sizeof(info->icy_url));
|
|
+ rc = extract_header_value(header, stempbr,
|
|
+ "icy-br:", sizeof(stempbr));
|
|
if (rc) {
|
|
info->icy_bitrate = atoi(stempbr);
|
|
}
|
|
|
|
/* interpret the content type from http header */
|
|
- rc = extract_header_value(header, stempbr, "Content-Type:");
|
|
+ rc = extract_header_value(header, stempbr,
|
|
+ "Content-Type:", sizeof(stempbr));
|
|
if (rc == 0) {
|
|
- rc = extract_header_value(header, stempbr, "content-type:");
|
|
+ rc = extract_header_value(header, stempbr,
|
|
+ "content-type:", sizeof(stempbr));
|
|
}
|
|
if (rc == 0) {
|
|
info->content_type = CONTENT_TYPE_UNKNOWN;
|
|
@@ -418,11 +426,15 @@ httplib_parse_sc_header (const char *url
|
|
}
|
|
|
|
// icecast 1.x headers.
|
|
- extract_header_value(header, info->icy_url, "x-audiocast-server-url:");
|
|
- rc = extract_header_value(header, info->icy_name, "x-audiocast-name:");
|
|
+ extract_header_value(header, info->icy_url, "x-audiocast-server-url:",
|
|
+ sizeof(info->icy_url));
|
|
+ rc = extract_header_value(header, info->icy_name, "x-audiocast-name:",
|
|
+ sizeof(info->icy_name));
|
|
info->have_icy_name |= rc;
|
|
- extract_header_value(header, info->icy_genre, "x-audiocast-genre:");
|
|
- rc = extract_header_value(header, stempbr, "x-audiocast-bitrate:");
|
|
+ extract_header_value(header, info->icy_genre, "x-audiocast-genre:",
|
|
+ sizeof(info->icy_genre));
|
|
+ rc = extract_header_value(header, stempbr, "x-audiocast-bitrate:",
|
|
+ sizeof(stempbr));
|
|
if (rc) {
|
|
info->icy_bitrate = atoi(stempbr);
|
|
}
|
|
@@ -626,7 +638,8 @@ httplib_get_pls (HSOCKET *sock, SR_HTTP_
|
|
int best_open = 0;
|
|
|
|
sprintf (buf1, "File%d=", s);
|
|
- if (!extract_header_value (buf, location_buf, buf1)) {
|
|
+ if (!extract_header_value (buf, location_buf, buf1,
|
|
+ sizeof(location_buf))) {
|
|
break;
|
|
}
|
|
if (s == 1) {
|
|
@@ -635,7 +648,7 @@ httplib_get_pls (HSOCKET *sock, SR_HTTP_
|
|
}
|
|
|
|
sprintf (buf1, "Title%d=", s);
|
|
- if (!extract_header_value (buf, title_buf, buf1)) {
|
|
+ if (!extract_header_value (buf, title_buf, buf1, sizeof(title_buf))) {
|
|
break;
|
|
}
|
|
num_scanned = sscanf (title_buf, "(#%*[0-9] - %d/%d",&used,&total);
|