]> granicus.if.org Git - graphviz/commitdiff
jpeg_size: remove use of 'junk' variable
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 17 Nov 2021 03:01:14 +0000 (19:01 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 21 Nov 2021 01:09:14 +0000 (17:09 -0800)
This code was reading big endian integers into this variable that was then
ignored as a way of skipping fields. It is simpler and more efficient to just
fast forward the file handle over those bytes. This assumes the file handle is
to something seekable (e.g. not a FIFO), but the handle was already seeked
elsewhere in this function, so this assumption already existed.

lib/gvc/gvusershape.c

index bfe61fa6f2010342ed1aca760a31e024c3669e59..693cfdcd6e4e53c10fea90604532bfa30c766da3 100644 (file)
@@ -11,6 +11,7 @@
 #include "config.h"
 
 #include <stdbool.h>
+#include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <ctype.h>
@@ -333,7 +334,7 @@ static void bmp_size (usershape_t *us) {
 }
 
 static void jpeg_size (usershape_t *us) {
-    unsigned int marker, length, size_x, size_y, junk;
+    unsigned int marker, length, size_x, size_y;
 
     /* These are the markers that follow 0xff in the file.
      * Other markers implicitly have a 2-byte length field that follows.
@@ -373,7 +374,7 @@ static void jpeg_size (usershape_t *us) {
         /* Incase of a 0xc0 marker: */
         if (marker == 0xc0) {
             /* Skip length and 2 lengths. */
-            if ( get_int_msb_first (us->f, 3, &junk)   &&
+            if (fseek(us->f, 3, SEEK_CUR) == 0 &&
                  get_int_msb_first (us->f, 2, &size_x) &&
                  get_int_msb_first (us->f, 2, &size_y) ) {
 
@@ -387,7 +388,7 @@ static void jpeg_size (usershape_t *us) {
         /* Incase of a 0xc2 marker: */
         if (marker == 0xc2) {
             /* Skip length and one more byte */
-            if (! get_int_msb_first (us->f, 3, &junk))
+            if (fseek(us->f, 3, SEEK_CUR) != 0)
                 return;
 
             /* Get length and store. */