]> git.pld-linux.org Git - packages/audacious-plugins.git/blame - audacious-plugins-AUDPLUG-323.patch
- fix name of patches
[packages/audacious-plugins.git] / audacious-plugins-AUDPLUG-323.patch
CommitLineData
be091c23
KK
1
2# HG changeset patch
3# User John Lindgren <john.lindgren@tds.net>
4# Date 1295406442 18000
5# Node ID b2c94059fb28375515c0ca9b54a5b2f09c333375
6# Parent 3f1ab558c6cf557d226151e941b5113ccd154d73
7mtp_up: Use strrchr instead of rindex; fix potential 0x1 pointer dereference (patch from Carlo Bramini, AUDPLUG-323).
8
9diff -r 3f1ab558c6cf -r b2c94059fb28 src/mtp_up/filetype.c
10--- a/src/mtp_up/filetype.c Tue Jan 18 01:19:25 2011 -0500
11+++ b/src/mtp_up/filetype.c Tue Jan 18 22:07:22 2011 -0500
12@@ -2,84 +2,76 @@
13 #include "string.h"
14 #include "filetype.h"
15
16+typedef struct {
17+ const char *ptype;
18+ const LIBMTP_filetype_t filetype;
19+} file_entry_t;
20+
21+/* This need to be kept constantly updated as new file types arrive. */
22+static const file_entry_t file_entries[] = {
23+ { "wav", LIBMTP_FILETYPE_WAV },
24+ { "mp3", LIBMTP_FILETYPE_MP3 },
25+ { "wma", LIBMTP_FILETYPE_WMA },
26+ { "ogg", LIBMTP_FILETYPE_OGG },
27+ { "mp4", LIBMTP_FILETYPE_MP4 },
28+ { "wmv", LIBMTP_FILETYPE_WMV },
29+ { "avi", LIBMTP_FILETYPE_AVI },
30+ { "mpeg", LIBMTP_FILETYPE_MPEG },
31+ { "mpg", LIBMTP_FILETYPE_MPEG },
32+ { "asf", LIBMTP_FILETYPE_ASF },
33+ { "qt", LIBMTP_FILETYPE_QT },
34+ { "mov", LIBMTP_FILETYPE_QT },
35+ { "wma", LIBMTP_FILETYPE_WMA },
36+ { "jpg", LIBMTP_FILETYPE_JPEG },
37+ { "jpeg", LIBMTP_FILETYPE_JPEG },
38+ { "jfif", LIBMTP_FILETYPE_JFIF },
39+ { "tif", LIBMTP_FILETYPE_TIFF },
40+ { "tiff", LIBMTP_FILETYPE_TIFF },
41+ { "bmp", LIBMTP_FILETYPE_BMP },
42+ { "gif", LIBMTP_FILETYPE_GIF },
43+ { "pic", LIBMTP_FILETYPE_PICT },
44+ { "pict", LIBMTP_FILETYPE_PICT },
45+ { "png", LIBMTP_FILETYPE_PNG },
46+ { "wmf", LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT },
47+ { "ics", LIBMTP_FILETYPE_VCALENDAR2 },
48+ { "exe", LIBMTP_FILETYPE_WINEXEC },
49+ { "com", LIBMTP_FILETYPE_WINEXEC },
50+ { "bat", LIBMTP_FILETYPE_WINEXEC },
51+ { "dll", LIBMTP_FILETYPE_WINEXEC },
52+ { "sys", LIBMTP_FILETYPE_WINEXEC },
53+ { "aac", LIBMTP_FILETYPE_AAC },
54+ { "mp2", LIBMTP_FILETYPE_MP2 },
55+ { "flac", LIBMTP_FILETYPE_FLAC },
56+ { "m4a", LIBMTP_FILETYPE_M4A },
57+ { "doc", LIBMTP_FILETYPE_DOC },
58+ { "xml", LIBMTP_FILETYPE_XML },
59+ { "xls", LIBMTP_FILETYPE_XLS },
60+ { "ppt", LIBMTP_FILETYPE_PPT },
61+ { "mht", LIBMTP_FILETYPE_MHT },
62+ { "jp2", LIBMTP_FILETYPE_JP2 },
63+ { "jpx", LIBMTP_FILETYPE_JPX }
64+};
65+
66 /* Find the file type based on extension */
67 LIBMTP_filetype_t
68 find_filetype (const char * filename)
69 {
70- char *ptype;
71- ptype = rindex(filename,'.')+1;
72- LIBMTP_filetype_t filetype;
73- /* This need to be kept constantly updated as new file types arrive. */
74- if (!strcasecmp (ptype, "wav")) {
75- filetype = LIBMTP_FILETYPE_WAV;
76- } else if (!strcasecmp (ptype, "mp3")) {
77- filetype = LIBMTP_FILETYPE_MP3;
78- } else if (!strcasecmp (ptype, "wma")) {
79- filetype = LIBMTP_FILETYPE_WMA;
80- } else if (!strcasecmp (ptype, "ogg")) {
81- filetype = LIBMTP_FILETYPE_OGG;
82- } else if (!strcasecmp (ptype, "mp4")) {
83- filetype = LIBMTP_FILETYPE_MP4;
84- } else if (!strcasecmp (ptype, "wmv")) {
85- filetype = LIBMTP_FILETYPE_WMV;
86- } else if (!strcasecmp (ptype, "avi")) {
87- filetype = LIBMTP_FILETYPE_AVI;
88- } else if (!strcasecmp (ptype, "mpeg") || !strcasecmp (ptype, "mpg")) {
89- filetype = LIBMTP_FILETYPE_MPEG;
90- } else if (!strcasecmp (ptype, "asf")) {
91- filetype = LIBMTP_FILETYPE_ASF;
92- } else if (!strcasecmp (ptype, "qt") || !strcasecmp (ptype, "mov")) {
93- filetype = LIBMTP_FILETYPE_QT;
94- } else if (!strcasecmp (ptype, "wma")) {
95- filetype = LIBMTP_FILETYPE_WMA;
96- } else if (!strcasecmp (ptype, "jpg") || !strcasecmp (ptype, "jpeg")) {
97- filetype = LIBMTP_FILETYPE_JPEG;
98- } else if (!strcasecmp (ptype, "jfif")) {
99- filetype = LIBMTP_FILETYPE_JFIF;
100- } else if (!strcasecmp (ptype, "tif") || !strcasecmp (ptype, "tiff")) {
101- filetype = LIBMTP_FILETYPE_TIFF;
102- } else if (!strcasecmp (ptype, "bmp")) {
103- filetype = LIBMTP_FILETYPE_BMP;
104- } else if (!strcasecmp (ptype, "gif")) {
105- filetype = LIBMTP_FILETYPE_GIF;
106- } else if (!strcasecmp (ptype, "pic") || !strcasecmp (ptype, "pict")) {
107- filetype = LIBMTP_FILETYPE_PICT;
108- } else if (!strcasecmp (ptype, "png")) {
109- filetype = LIBMTP_FILETYPE_PNG;
110- } else if (!strcasecmp (ptype, "wmf")) {
111- filetype = LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT;
112- } else if (!strcasecmp (ptype, "ics")) {
113- filetype = LIBMTP_FILETYPE_VCALENDAR2;
114- } else if (!strcasecmp (ptype, "exe") || !strcasecmp (ptype, "com") ||
115- !strcasecmp (ptype, "bat") || !strcasecmp (ptype, "dll") ||
116- !strcasecmp (ptype, "sys")) {
117- filetype = LIBMTP_FILETYPE_WINEXEC;
118- } else if (!strcasecmp (ptype, "aac")) {
119- filetype = LIBMTP_FILETYPE_AAC;
120- } else if (!strcasecmp (ptype, "mp2")) {
121- filetype = LIBMTP_FILETYPE_MP2;
122- } else if (!strcasecmp (ptype, "flac")) {
123- filetype = LIBMTP_FILETYPE_FLAC;
124- } else if (!strcasecmp (ptype, "m4a")) {
125- filetype = LIBMTP_FILETYPE_M4A;
126- } else if (!strcasecmp (ptype, "doc")) {
127- filetype = LIBMTP_FILETYPE_DOC;
128- } else if (!strcasecmp (ptype, "xml")) {
129- filetype = LIBMTP_FILETYPE_XML;
130- } else if (!strcasecmp (ptype, "xls")) {
131- filetype = LIBMTP_FILETYPE_XLS;
132- } else if (!strcasecmp (ptype, "ppt")) {
133- filetype = LIBMTP_FILETYPE_PPT;
134- } else if (!strcasecmp (ptype, "mht")) {
135- filetype = LIBMTP_FILETYPE_MHT;
136- } else if (!strcasecmp (ptype, "jp2")) {
137- filetype = LIBMTP_FILETYPE_JP2;
138- } else if (!strcasecmp (ptype, "jpx")) {
139- filetype = LIBMTP_FILETYPE_JPX;
140- } else {
141- /* Tagging as unknown file type */
142- filetype = LIBMTP_FILETYPE_UNKNOWN;
143- }
144- return filetype;
145+ char *ptype = strrchr(filename,'.');
146+ unsigned int n;
147+
148+ if (ptype != NULL)
149+ {
150+ /* Skip '.' char */
151+ ptype++;
152+
153+ /* Seach entry in the table */
154+ for (n=0; n<sizeof(file_entries)/sizeof(file_entries[0]); n++)
155+ {
156+ if (!strcasecmp (ptype, file_entries[n].ptype))
157+ return file_entries[n].filetype;
158+ }
159+ }
160+
161+ return LIBMTP_FILETYPE_UNKNOWN;
162 }
163
164
This page took 0.123802 seconds and 4 git commands to generate.