Bug Summary

File:obj-scan-build/libstore/../../libstore/util.c
Location:line 108, column 6
Description:Value stored to 'part' is never read

Annotated Source Code

1/* Hacked and slashed by roland@gnu.ai.mit.edu for use in Hurd exec server. */
2
3/* util.c -- utility functions for gzip support
4 * Copyright (C) 1992-1993 Jean-loup Gailly
5 * This is free software; you can redistribute it and/or modify it under the
6 * terms of the GNU General Public License, see the file COPYING.
7 */
8
9#ifdef RCSID
10static char rcsid[] = "$Id: util.c,v 1.1 1994/12/14 04:29:37 roland Exp $";
11#endif
12
13#include <ctype.h>
14#include <errno(*__errno_location ()).h>
15#include <sys/types.h>
16
17#include "tailor.h"
18
19#ifdef HAVE_UNISTD_H1
20# include <unistd.h>
21#endif
22#ifndef NO_FCNTL_H
23# include <fcntl.h>
24#endif
25
26#if defined(STDC_HEADERS1) || !defined(NO_STDLIB_H)
27# include <stdlib.h>
28#else
29 extern int errno(*__errno_location ());
30#endif
31
32#include "gzip.h"
33#include "crypt.h"
34
35/* cruft */
36int ifd, ofd;
37int to_stdout=1,quiet=1;
38
39/* I/O interface */
40int (*unzip_read) (char *buf, size_t maxread);
41void (*unzip_write) (const char *buf, size_t nwrite);
42#define read_error()(*unzip_read_error) () (*unzip_read_error) ()
43void (*unzip_read_error) (void);
44
45
46extern ulg crc_32_tab[]; /* crc table, defined below */
47
48int exit_code = OK0; /* program exit code */
49int method = DEFLATED8;/* compression method */
50unsigned insize; /* valid bytes in inbuf */
51unsigned inptr; /* index of next byte to be processed in inbuf */
52unsigned outcnt; /* bytes in output buffer */
53DECLARE(uch, inbuf, INBUFSIZ +INBUF_EXTRA)uch inbuf[0x8000 +64];
54DECLARE(uch, outbuf, OUTBUFSIZ+OUTBUF_EXTRA)uch outbuf[16384 +2048];
55DECLARE(uch, window, 2L*WSIZE)uch window[2L*0x8000];
56
57
58/* This function stolen from gzip.c. */
59/* ========================================================================
60 * Check the magic number of the input file and update ofname if an
61 * original name was given and to_stdout is not set.
62 * Return the compression method, -1 for error, -2 for warning.
63 * Set inptr to the offset of the next byte to be processed.
64 * Updates time_stamp if there is one and --no-time is not used.
65 * This function may be called repeatedly for an input file consisting
66 * of several contiguous gzip'ed members.
67 * IN assertions: there is at least one remaining compressed member.
68 * If the member is a zip file, it must be the only one.
69 */
70int get_method(in)
71 int in; /* input file descriptor */
72{
73 uch flags; /* compression flags */
74 char magic[2]; /* magic header */
75 ulg stamp; /* time stamp */
76
77 /* Prime the input buffer. */
78 fill_inbuf(0);
79 inptr = 0;
80
81 magic[0] = (char)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
82 magic[1] = (char)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
83
84 method = -1; /* unknown yet */
85
86 if (memcmp(magic, GZIP_MAGIC"\037\213", 2) == 0
87 || memcmp(magic, OLD_GZIP_MAGIC"\037\236", 2) == 0) {
88
89 method = (int)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
90 if (method != DEFLATED8)
91 return -1;
92
93 flags = (uch)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
94 if ((flags & ENCRYPTED0x20) != 0) return -1;
95 if ((flags & CONTINUATION0x02) != 0) return -1;
96 if ((flags & RESERVED0xC0) != 0) return -1;
97
98 stamp = (ulg)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
99 stamp |= ((ulg)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0))) << 8;
100 stamp |= ((ulg)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0))) << 16;
101 stamp |= ((ulg)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0))) << 24;
102
103 (void)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0)); /* Ignore extra flags for the moment */
104 (void)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0)); /* Ignore OS type for the moment */
105
106 if ((flags & CONTINUATION0x02) != 0) {
107 unsigned part = (unsigned)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
108 part |= ((unsigned)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0)))<<8;
Value stored to 'part' is never read
109 }
110 if ((flags & EXTRA_FIELD0x04) != 0) {
111 unsigned len = (unsigned)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
112 len |= ((unsigned)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0)))<<8;
113 while (len--) (void)get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
114 }
115
116 /* Get original file name if it was truncated */
117 if ((flags & ORIG_NAME0x08) != 0) {
118 /* Discard the old name */
119 char c; /* dummy used for NeXTstep 3.0 cc optimizer bug */
120 do {c=get_byte()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));} while (c != 0);
121 }
122
123 /* Discard file comment if any */
124 if ((flags & COMMENT0x10) != 0) {
125 while (get_char()(inptr < insize ? inbuf[inptr++] : fill_inbuf(0)) != 0) /* null */ ;
126 }
127 } else if (memcmp(magic, PKZIP_MAGIC"\120\113\003\004", 2) == 0 && inptr == 2
128 && memcmp((char*)inbuf, PKZIP_MAGIC"\120\113\003\004", 4) == 0) {
129 /* To simplify the code, we support a zip file when alone only.
130 * We are thus guaranteed that the entire local header fits in inbuf.
131 */
132 inptr = 0;
133 if (check_zipfile(in) == OK0) return 0;
134 }
135
136 return method != DEFLATED8;
137}
138
139
140/* ===========================================================================
141 * Run a set of bytes through the crc shift register. If s is a NULL
142 * pointer, then initialize the crc shift register contents instead.
143 * Return the current crc in either case.
144 */
145ulg updcrc(s, n)
146 uch *s; /* pointer to bytes to pump through */
147 unsigned n; /* number of bytes in s[] */
148{
149 register ulg c; /* temporary variable */
150
151 static ulg crc = (ulg)0xffffffffL; /* shift register contents */
152
153 if (s == NULL((void*)0)) {
154 c = 0xffffffffL;
155 } else {
156 c = crc;
157 if (n) do {
158 c = crc_32_tab[((int)c ^ (*s++)) & 0xff] ^ (c >> 8);
159 } while (--n);
160 }
161 crc = c;
162 return c ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */
163}
164
165/* ===========================================================================
166 * Clear input and output buffers
167 */
168void clear_bufs()
169{
170 outcnt = 0;
171 insize = inptr = 0;
172}
173
174/* ===========================================================================
175 * Fill the input buffer. This is called only when the buffer is empty.
176 */
177int fill_inbuf(eof_ok)
178 int eof_ok; /* set if EOF acceptable as a result */
179{
180 int len;
181
182 /* Read as much as possible */
183 insize = 0;
184 do {
185 len = (*unzip_read)((char*)inbuf+insize, INBUFSIZ0x8000-insize);
186 if (len == 0 || len == EOF(-1)) break;
187 insize += len;
188 } while (insize < INBUFSIZ0x8000);
189
190 if (insize == 0) {
191 if (eof_ok) return EOF(-1);
192 read_error()(*unzip_read_error) ();
193 }
194
195 inptr = 1;
196 return inbuf[0];
197}
198
199long int bytes_out;
200
201/* ===========================================================================
202 * Write the output window window[0..outcnt-1] and update crc and bytes_out.
203 * (Used for the decompressed data only.)
204 */
205void flush_window()
206{
207 if (outcnt == 0) return;
208 updcrc(window, outcnt);
209
210 (*unzip_write) ((char *) window, outcnt);
211 bytes_out += outcnt;
212
213 outcnt = 0;
214}
215
216/* ========================================================================
217 * Table of CRC-32's of all single-byte values (made by makecrc.c)
218 */
219ulg crc_32_tab[] = {
220 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
221 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
222 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
223 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
224 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
225 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
226 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
227 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
228 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
229 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
230 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
231 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
232 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
233 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
234 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
235 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
236 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
237 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
238 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
239 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
240 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
241 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
242 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
243 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
244 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
245 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
246 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
247 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
248 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
249 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
250 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
251 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
252 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
253 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
254 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
255 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
256 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
257 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
258 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
259 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
260 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
261 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
262 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
263 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
264 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
265 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
266 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
267 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
268 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
269 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
270 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
271 0x2d02ef8dL
272};