41 lines
1.3 KiB
Text
41 lines
1.3 KiB
Text
|
overlapping snprintf
|
||
|
|
||
|
Index: src/discdb.c
|
||
|
--- src/discdb.c.orig
|
||
|
+++ src/discdb.c
|
||
|
@@ -611,9 +611,11 @@ gboolean DiscDBRead(DiscInfo *disc,DiscDBServer *serve
|
||
|
|
||
|
/* Both disc title and artist have been stuffed in the title field, so the
|
||
|
need to be separated */
|
||
|
-
|
||
|
- DiscDBParseTitle(data->data_title,data->data_title,data->data_artist,"/");
|
||
|
+ inbuffer=strdup(data->data_title);
|
||
|
|
||
|
+ DiscDBParseTitle(inbuffer,data->data_title,data->data_artist,"/");
|
||
|
+
|
||
|
+ free(inbuffer);
|
||
|
free(result);
|
||
|
|
||
|
/* Don't allow the genre to be overwritten */
|
||
|
@@ -667,6 +669,7 @@ int DiscDBReadDiscData(DiscInfo *disc,DiscData *ddata,
|
||
|
FILE *discdb_data=NULL;
|
||
|
int index,genre;
|
||
|
char root_dir[256],file[256],inbuf[512];
|
||
|
+ char* buf;
|
||
|
struct stat st;
|
||
|
|
||
|
g_snprintf(root_dir, 256, "%s/.cddb", g_get_home_dir());
|
||
|
@@ -724,8 +727,11 @@ int DiscDBReadDiscData(DiscInfo *disc,DiscData *ddata,
|
||
|
|
||
|
/* Both disc title and artist have been stuffed in the title field, so the
|
||
|
need to be separated */
|
||
|
+ buf = strdup(ddata->data_title);
|
||
|
|
||
|
- DiscDBParseTitle(ddata->data_title,ddata->data_title,ddata->data_artist,"/");
|
||
|
+ DiscDBParseTitle(buf,ddata->data_title,ddata->data_artist,"/");
|
||
|
+
|
||
|
+ free(buf);
|
||
|
|
||
|
if(!DiscDBUTF8Validate(disc,ddata)) {
|
||
|
DiscDBConvertEncoding(disc,ddata,strcasecmp(encoding,"UTF-8")?
|