Skip to content

Commit d9f8f7d

Browse files
authored
Merge pull request #59 from zakki/fix-pack-absolute-path
Fix uninitialized fname access when copying absolute path.
2 parents 6eef346 + 8e21c4e commit d9f8f7d

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

src/hsp3/dpmread.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -165,17 +165,20 @@ int dpm_filecopy( char *fname, char *sname )
165165
fp2=fopen(sname,"wb");if (fp2==NULL) return 1;
166166
#endif
167167
fp1 = filepack.pack_fopen(fname);
168-
if (fp1 == NULL) return -1;
169-
170-
mem=(char *)mem_ini(max);
171-
while(1) {
172-
if (flen==0) break;
173-
if (flen<max) xlen=flen; else xlen=max;
174-
filepack.pack_fread(fp1, mem, xlen);
175-
fres = (int)fwrite( mem, 1, xlen, fp2 );
176-
if (fres<xlen) break;
177-
flen-=xlen;
178-
}
168+
if (fp1 == NULL) {
169+
fclose(fp2);
170+
return -1;
171+
}
172+
173+
mem=(char *)mem_ini(max);
174+
while(1) {
175+
if (flen==0) break;
176+
if (flen<max) xlen=flen; else xlen=max;
177+
filepack.pack_fread(fp1, mem, xlen);
178+
fres = (int)fwrite( mem, 1, xlen, fp2 );
179+
if (fres<xlen) break;
180+
flen-=xlen;
181+
}
179182

180183
filepack.pack_fclose(fp1);
181184
fclose(fp2);

src/hsp3/filepack.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,10 @@ int FilePack::LoadPackFile( char *fname, int encode, int dpmoffset, int slot)
443443

444444
p = (HFPHED *)_MALLOC( hedsize );
445445
ff=hsp3_fopen(dpmname, dpmoffset);
446-
if (ff == NULL) return -2;
446+
if (ff == NULL) {
447+
_FREE(p);
448+
return -2;
449+
}
447450
hsp3_fread( ff, p, hedsize );
448451
hsp3_fclose(ff);
449452

src/hsp3dish/essprite.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1895,7 +1895,10 @@ int essprite::draw(int start, int num, int mode, int start_pri, int end_pri)
18951895
a1 = start; a2 = num;
18961896
if (a1 < 0) a1 = 0;
18971897
if (a2 < 0) a2 = spkaz;
1898-
if (a1 >= spkaz) return -1;
1898+
if (a1 >= spkaz) {
1899+
delete [] selspr;
1900+
return -1;
1901+
}
18991902
if ((a1 + a2) >= spkaz) a2 = spkaz-a1;
19001903

19011904
if ((start_pri >= 0) && (end_pri >= 0)) {

src/hspcmp/token.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ int CToken::AddPackfile( char *name, int mode )
243243
strcat(fname, p_fname);
244244
}
245245
else {
246-
strcat(fname, name);
246+
strcpy(fname, name);
247247
}
248248

249249
strcpy( packadd, fname);
@@ -307,7 +307,7 @@ int CToken::AddPackfileOrig(char* name, int mode)
307307
strcat(fname, p_fname);
308308
}
309309
else {
310-
strcat(fname, name);
310+
strcpy(fname, name);
311311
}
312312

313313
strcpy(packadd, fname);

0 commit comments

Comments
 (0)