[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [libextractor] 03/27: avoid passing of char to isspace()-fa
From: |
gnunet |
Subject: |
[GNUnet-SVN] [libextractor] 03/27: avoid passing of char to isspace()-family of functions, always pass unsigned chars |
Date: |
Sun, 15 Oct 2017 21:34:27 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository libextractor.
commit 4542314a64d37446c444fda15f14da6b76f82343
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Oct 15 19:48:43 2017 +0200
avoid passing of char to isspace()-family of functions, always pass
unsigned chars
---
ChangeLog | 3 ++-
src/plugins/deb_extractor.c | 26 ++++++++++++++------------
src/plugins/jpeg_extractor.c | 2 +-
src/plugins/pdf_extractor.c | 2 +-
src/plugins/ps_extractor.c | 16 ++++++++--------
5 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index c1a730a9..f6dd28e1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
Sun Oct 15 19:36:41 CEST 2017
Fix potential file descriptor leak (on error handling path).
- Fix potential assign-after-free (on IPC error handling path). -CG
+ Fix potential assign-after-free (on IPC error handling path).
+ Make sure to only pass "unsigned char" to functions like isspace(). -CG
Fri Oct 13 12:30:37 CEST 2017
Properly check read error in NSF plugin (from signedness confusion)
found by Leon Zhao. -CG
diff --git a/src/plugins/deb_extractor.c b/src/plugins/deb_extractor.c
index 0f9fab1c..afbe8bb5 100644
--- a/src/plugins/deb_extractor.c
+++ b/src/plugins/deb_extractor.c
@@ -19,7 +19,7 @@
*/
/**
* @file plugins/deb_extractor.c
- * @brief plugin to support Debian archives
+ * @brief plugin to support Debian archives
* @author Christian Grothoff
*
* The .deb is an ar-chive file. It contains a tar.gz file
@@ -86,7 +86,7 @@ struct Matches
/**
* Map from deb-control entries to LE types.
*
- * see also: "man 5 deb-control"
+ * see also: "man 5 deb-control"
*/
static struct Matches tmap[] = {
{"Package: ", EXTRACTOR_METATYPE_PACKAGE_NAME},
@@ -131,7 +131,7 @@ processControl (const char *data,
size_t colon;
size_t eol;
unsigned int i;
-
+
pos = 0;
while (pos < size)
{
@@ -159,7 +159,7 @@ processControl (const char *data,
free (key);
return 0;
}
- if (0 != proc (proc_cls,
+ if (0 != proc (proc_cls,
"deb",
tmap[i].type,
EXTRACTOR_METAFORMAT_UTF8,
@@ -190,7 +190,7 @@ struct TarHeader
* Filename.
*/
char name[100];
-
+
/**
* File access modes.
*/
@@ -210,7 +210,7 @@ struct TarHeader
* Size of the file, in octal.
*/
char filesize[12];
-
+
/**
* Last modification time.
*/
@@ -363,6 +363,8 @@ processControlTGZ (struct EXTRACTOR_ExtractContext *ec,
if (size > MAX_CONTROL_SIZE)
return 0;
+ if (0 == size)
+ return 0;
if (NULL == (cdata = malloc (size)))
return 0;
off = 0;
@@ -392,12 +394,12 @@ processControlTGZ (struct EXTRACTOR_ExtractContext *ec,
strm.next_in = (Bytef *) data;
strm.avail_in = size;
if (Z_OK == inflateInit2 (&strm, 15 + 32))
- {
+ {
strm.next_out = (Bytef *) buf;
strm.avail_out = bufSize;
inflate (&strm, Z_FINISH);
if (strm.total_out > 0)
- ret = processControlTar (buf, strm.total_out,
+ ret = processControlTar (buf, strm.total_out,
ec->proc, ec->cls);
inflateEnd (&strm);
}
@@ -450,11 +452,11 @@ struct ObjectHeader
/**
- * Main entry method for the DEB extraction plugin.
+ * Main entry method for the DEB extraction plugin.
*
* @param ec extraction context provided to the plugin
*/
-void
+void
EXTRACTOR_deb_extract_method (struct EXTRACTOR_ExtractContext *ec)
{
uint64_t pos;
@@ -493,7 +495,7 @@ EXTRACTOR_deb_extract_method (struct
EXTRACTOR_ExtractContext *ec)
if ((pos + csize > fsize) || (csize > fsize) || (pos + csize < pos))
return;
if (0 == strncmp (&hdr->name[0],
- "control.tar.gz",
+ "control.tar.gz",
strlen ("control.tar.gz")))
{
if (0 != processControlTGZ (ec,
@@ -504,7 +506,7 @@ EXTRACTOR_deb_extract_method (struct
EXTRACTOR_ExtractContext *ec)
if (0 == strncmp (&hdr->name[0],
"debian-binary", strlen ("debian-binary")))
{
- if (0 != ec->proc (ec->cls,
+ if (0 != ec->proc (ec->cls,
"deb",
EXTRACTOR_METATYPE_MIMETYPE,
EXTRACTOR_METAFORMAT_UTF8,
diff --git a/src/plugins/jpeg_extractor.c b/src/plugins/jpeg_extractor.c
index 564da46f..d6c1f6f6 100644
--- a/src/plugins/jpeg_extractor.c
+++ b/src/plugins/jpeg_extractor.c
@@ -162,7 +162,7 @@ EXTRACTOR_jpeg_extract_method (struct
EXTRACTOR_ExtractContext *ec)
continue;
off = 0;
while ( (off < mptr->data_length) &&
- (isspace ((int) ((const char *)mptr->data)[mptr->data_length - 1
- off])) )
+ (isspace (((const unsigned char *)mptr->data)[mptr->data_length -
1 - off])) )
off++;
if (0 !=
ec->proc (ec->cls,
diff --git a/src/plugins/pdf_extractor.c b/src/plugins/pdf_extractor.c
index b84981fa..14258a7d 100644
--- a/src/plugins/pdf_extractor.c
+++ b/src/plugins/pdf_extractor.c
@@ -100,7 +100,7 @@ process_stdout (FILE *fout,
if (NULL == colon)
break;
psuffix = colon + 1;
- while (isblank ((int) psuffix[0]))
+ while (isblank ((unsigned char) psuffix[0]))
psuffix++;
if (0 == strlen (psuffix))
continue;
diff --git a/src/plugins/ps_extractor.c b/src/plugins/ps_extractor.c
index 41776bb2..3a7f26da 100644
--- a/src/plugins/ps_extractor.c
+++ b/src/plugins/ps_extractor.c
@@ -49,7 +49,7 @@ struct Matches
* PS header prefix.
*/
const char *prefix;
-
+
/**
* Corresponding LE type.
*/
@@ -106,7 +106,7 @@ readline (struct EXTRACTOR_ExtractContext *ec)
pos = ec->seek (ec->cls, 0, SEEK_CUR);
if (0 >= (ret = ec->read (ec->cls, &data, MAX_LINE)))
- return NULL;
+ return NULL;
cdata = data;
if (NULL == (eol = memchr (cdata, '\n', ret)))
return NULL; /* no end-of-line found */
@@ -120,7 +120,7 @@ readline (struct EXTRACTOR_ExtractContext *ec)
/**
- * Main entry method for the 'application/postscript' extraction plugin.
+ * Main entry method for the 'application/postscript' extraction plugin.
*
* @param ec extraction context provided to the plugin
*/
@@ -152,7 +152,7 @@ EXTRACTOR_ps_extract_method (struct
EXTRACTOR_ExtractContext *ec)
"application/postscript",
strlen ("application/postscript") + 1))
return;
-
+
line = NULL;
next = readline (ec);
while ( (NULL != next) &&
@@ -170,8 +170,8 @@ EXTRACTOR_ps_extract_method (struct
EXTRACTOR_ExtractContext *ec)
while ( (NULL != next) &&
(0 == strncmp (next, "%%+", strlen ("%%+"))) )
{
- if (NULL == (acc = malloc (strlen (line) + strlen (next) - 1)))
- break;
+ if (NULL == (acc = malloc (strlen (line) + strlen (next) - 1)))
+ break;
strcpy (acc, line);
strcat (acc, " ");
strcat (acc, next + 3);
@@ -180,7 +180,7 @@ EXTRACTOR_ps_extract_method (struct
EXTRACTOR_ExtractContext *ec)
free (next);
next = readline (ec);
}
- if ( (line[strlen (line) - 1] == ')') &&
+ if ( (line[strlen (line) - 1] == ')') &&
(line[strlen (match)] == '(') )
{
acc = &line[strlen (match) + 1];
@@ -190,7 +190,7 @@ EXTRACTOR_ps_extract_method (struct
EXTRACTOR_ExtractContext *ec)
{
acc = &line[strlen (match)];
}
- while (isspace ((unsigned int) acc[0]))
+ while (isspace ((unsigned char) acc[0]))
acc++;
if ( (strlen (acc) > 0) &&
(0 != ec->proc (ec->cls,
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [libextractor] branch master updated (d0a7ceb6 -> e340cef5), gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 01/27: indentation fixes, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 04/27: indentation fixes, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 02/27: fix potential assign-after-free, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 08/27: fix potential buffer underflow read in deb_extractor, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 05/27: defensive programming: avoid malloc(0) in deb extractor, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 03/27: avoid passing of char to isspace()-family of functions, always pass unsigned chars,
gnunet <=
- [GNUnet-SVN] [libextractor] 09/27: fix very hypothetical lack of 0-termination in ole2-extractor iff translation string was more than 10x as long as the English version, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 16/27: handle allocation failure in gstreamer plugin, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 11/27: be more conservative about result from ctime_r, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 14/27: add missing continue if max meta data was reached to avoid use after free, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 15/27: fix indentation, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 06/27: fix duration initialization in ffmpeg extractor (badly positioned #if), gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 13/27: seems some specs of c_time allow up to 71 bytes, so increase buffer size just to be safe, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 19/27: need isspace, not isblank for rpm extractor, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 17/27: handle allocation failure in PDF fdopen call, gnunet, 2017/10/15
- [GNUnet-SVN] [libextractor] 18/27: do not try to seek on SHM if we do not use SHM, even if (bad) plugin requests it, gnunet, 2017/10/15