tpws : better gzip checking. fixing missing fclose

This commit is contained in:
bolvan 2019-05-10 08:47:23 +03:00
parent f8dd9f3d23
commit 5dd7834314
10 changed files with 26 additions and 26 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -77,5 +77,7 @@ zerr:
bool is_gzip(FILE* F)
{
unsigned char magic[2];
return !fseek(F,0,SEEK_SET) && fread(magic, 1, 2, F)==2 && magic[0]==0x1F && magic[1]==0x8B;
bool b = !fseek(F,0,SEEK_SET) && fread(magic, 1, 2, F)==2 && magic[0]==0x1F && magic[1]==0x8B;
fseek(F,0,SEEK_SET);
return b;
}

View File

@ -41,11 +41,14 @@ bool LoadHostList(strpool **hostlist, char *filename)
fprintf(stderr, "Could not open %s\n", filename);
return false;
}
if ((r=z_readfile(F,&zbuf,&zsize))==Z_OK)
{
printf("zlib compression detected. uncompressed size : %zu\n", zsize);
if (is_gzip(F))
{
r = z_readfile(F,&zbuf,&zsize);
fclose(F);
if (r==Z_OK)
{
printf("zlib compression detected. uncompressed size : %zu\n", zsize);
p = zbuf;
e = zbuf + zsize;
@ -61,20 +64,14 @@ bool LoadHostList(strpool **hostlist, char *filename)
}
free(zbuf);
}
else if (r!=Z_DATA_ERROR)
else
{
fprintf(stderr, "zlib decompression failed : result %d\n",r);
return false;
}
}
else
{
if (is_gzip(F))
{
fprintf(stderr, "hostlist is gzip but is broken : %s\n",filename);
return false;
}
fseek(F,0,SEEK_SET);
printf("loading plain text list\n",r);
while (fgets(s, 256, F))
@ -90,6 +87,7 @@ bool LoadHostList(strpool **hostlist, char *filename)
}
fclose(F);
}
printf("Loaded %d hosts from %s\n", ct, filename);
return true;
}