Edit

IABSD.fr/ports/audio/libworkman/patches/patch-cddb_c

Branch :

  • Show log

    Commit

  • Author : jca
    Date : 2023-01-24 18:12:41
    Hash : d84f4876
    Message : Fix build with clang 15 Refresh patches while here

  • audio/libworkman/patches/patch-cddb_c
  • Index: cddb.c
    --- cddb.c.orig
    +++ cddb.c
    @@ -33,6 +33,7 @@ static char cddb_id[] = "$Id: cddb.c,v 1.2 1999/02/14 
     
     #include <stdio.h>
     #include <stdlib.h>
    +#include <string.h>
     #include <strings.h>
     #include <unistd.h>
     #include <sys/types.h>
    @@ -73,10 +74,10 @@ void
     cddb_cur2struct(void)
     {
     	cddb.protocol = cur_cddb_protocol;
    -	strcpy(cddb.cddb_server,  cur_cddb_server);
    -	strcpy(cddb.mail_adress,  cur_cddb_mail_adress);
    -	strcpy(cddb.path_to_cgi,  cur_cddb_path_to_cgi);
    -	strcpy(cddb.proxy_server, cur_cddb_proxy_server);
    +	strlcpy(cddb.cddb_server,  cur_cddb_server, sizeof(cddb.cddb_server));
    +	strlcpy(cddb.mail_adress,  cur_cddb_mail_adress, sizeof(cddb.mail_adress));
    +	strlcpy(cddb.path_to_cgi,  cur_cddb_path_to_cgi, sizeof(cddb.path_to_cgi));
    +	strlcpy(cddb.proxy_server, cur_cddb_proxy_server, sizeof(cddb.proxy_server));
     } /* cddb_cur2struct() */
     
     /*
    @@ -104,7 +105,7 @@ cddb_sum(int n)
     	int	ret = 0;
     
     	/* For backward compatibility this algorithm must not change */
    -	sprintf(buf, "%lu", (unsigned long)n);
    +	snprintf(buf, sizeof(buf), "%lu", (unsigned long)n);
     	for (p = buf; *p != '\0'; p++)
     	  ret += (*p - '0');
     
    @@ -175,10 +176,10 @@ string_makehello(char *line,char delim)
     {
     	char mail[84],*host;
     	
    -	strcpy(mail,cddb.mail_adress);
    +	strlcpy(mail,cddb.mail_adress,sizeof(mail));
     	host=string_split(mail,'@');
     	
    -	sprintf(line,"%shello%c%s%c%s%c%s%c%s",
    +	snprintf(line, sizeof(line), "%shello%c%s%c%s%c%s%c%s",
     		delim == ' ' ? "cddb " : "&",
     		delim == ' ' ? ' ' : '=',
     		mail,delim,
    @@ -226,7 +227,7 @@ connect_open(void)
     			printf("unknown host: %s\n", host);
     			return (-1);
     		}
    -		strcpy(namebuf, host);
    +		strlcpy(namebuf, host, sizeof(namebuf));
     		def.h_name = namebuf;
     		def.h_addr_list = alist, def.h_addr = (char *)&defaddr;
     		def.h_length = sizeof (struct in_addr);
    @@ -317,14 +318,14 @@ connect_read_entry(void)
     					t2 = t;
     				if(*t2 == ' ')
     				  t2++;
    -				strcpy(cd->cdname,t2);
    +				strlcpy(cd->cdname,t2,sizeof(cd->cdname));
     				
     				for(t2=t;*t2;t2++)
     				{
     					if((*t2 == ' ') && (*(t2+1) == 0))
     					  *t2=0;
     				}
    -				strcpy(cd->artist,t);
    +				strlcpy(cd->artist,t,sizeof(cd->artist));
     			}
     			
     			if('T' == type)
    @@ -359,7 +360,7 @@ void
     cddbp_read(char *category, unsigned int id)
     {
     	char tempbuf[84];
    -	sprintf(tempbuf, "cddb read %s %08x", category, id);
    +	snprintf(tempbuf, sizeof(tempbuf), "cddb read %s %08x", category, id);
     	cddbp_send(tempbuf);
     } /* cddbp_read() */
     
    @@ -400,7 +401,7 @@ void
     http_read(char *category, unsigned int id)
     {
     	char tempbuf[84];
    -	sprintf(tempbuf, "cddb+read+%s+%08x", category, id);
    +	snprintf(tempbuf, sizeof(tempbuf), "cddb+read+%s+%08x", category, id);
     	http_send(tempbuf);
     } /* http_read() */
     
    @@ -411,7 +412,7 @@ void
     cddb_request(void)
     {
     	int i;
    -	char tempbuf[2000];
    +	char tempbuf[2000], tmp2buf[12];
     	extern int cur_ntracks;
     	
     	int status;
    @@ -447,12 +448,14 @@ cddb_request(void)
     		printf("[%s]\n",tempbuf);
     		
     		printf("query\n");
    -		sprintf(tempbuf, "cddb query %08x %d",thiscd.cddbid,thiscd.ntracks);
    +		snprintf(tempbuf, sizeof(tempbuf), "cddb query %08x %d",thiscd.cddbid,thiscd.ntracks);
     		for (i = 0; i < cur_ntracks; i++)
    -		  if (thiscd.trk[i].section < 2)
    -		    sprintf(tempbuf + strlen(tempbuf), " %d",
    -			    thiscd.trk[i].start);
    -		sprintf(tempbuf + strlen(tempbuf), " %d\n", thiscd.length);
    +		  if (thiscd.trk[i].section < 2) {
    +		    snprintf(tmp2buf, sizeof(tmp2buf), " %d", thiscd.trk[i].start);
    +		    strlcat(tempbuf, tmp2buf, sizeof(tempbuf));
    +		  }
    +		snprintf(tmp2buf, sizeof(tmp2buf), " %d\n", thiscd.length);
    +		strlcat(tempbuf, tmp2buf, sizeof(tempbuf));
     		printf(">%s<\n",tempbuf);
     		cddbp_send(tempbuf);
     		connect_getline(tempbuf);
    @@ -491,12 +494,14 @@ cddb_request(void)
     		printf("USING HTTP%s\n",
     		       (cddb.protocol == 3) ? " WITH PROXY" : "");
     		printf("query\n");
    -		sprintf(tempbuf, "cddb+query+%08x+%d",thiscd.cddbid,thiscd.ntracks);
    +		snprintf(tempbuf, sizeof(tempbuf), "cddb+query+%08x+%d",thiscd.cddbid,thiscd.ntracks);
     		for (i = 0; i < cur_ntracks; i++)
    -		  if (thiscd.trk[i].section < 2)
    -		    sprintf(tempbuf + strlen(tempbuf), "+%d",
    -			    thiscd.trk[i].start);
    -		sprintf(tempbuf + strlen(tempbuf), "+%d", thiscd.length);
    +		  if (thiscd.trk[i].section < 2) {
    +		    snprintf(tmp2buf, sizeof(tmp2buf), "+%d", thiscd.trk[i].start);
    +		    strlcat(tempbuf, tmp2buf, sizeof(tempbuf));
    +		}
    +		snprintf(tmp2buf, sizeof(tmp2buf), "+%d", thiscd.length);
    +		strlcat(tempbuf, tmp2buf, sizeof(tempbuf));
     		printf(">%s<\n",tempbuf);
     		connect_open();
     		http_send(tempbuf);