|
Lines 830-838
find_files(name, v_filec, v_filev)
|
Link Here
|
|---|
|
DIRENTRY *dp; | DIRENTRY *dp; |
struct stat tmp_stbuf, arc_stbuf, fil_stbuf; | struct stat tmp_stbuf, arc_stbuf, fil_stbuf; |
| |
strcpy(newname, name); |
strncpy(newname, name, sizeof(newname)); |
|
newname[sizeof(newname)-1] = 0; |
len = strlen(name); | len = strlen(name); |
if (len > 0 && newname[len - 1] != '/') |
if (len > 0 && newname[len - 1] != '/' && len < (sizeof(newname)-1)) |
newname[len++] = '/'; | newname[len++] = '/'; |
| |
dirp = opendir(name); | dirp = opendir(name); |
|
Lines 846-851
find_files(name, v_filec, v_filev)
|
Link Here
|
|---|
|
| |
for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) { | for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) { |
n = NAMLEN(dp); | n = NAMLEN(dp); |
|
if (len >= (sizeof(newname)-1) || |
|
(len+n) >= (sizeof(newname)-1) || |
|
n <= 0 || |
|
(len+n) <= 0) |
|
break; |
strncpy(newname + len, dp->d_name, n); | strncpy(newname + len, dp->d_name, n); |
newname[len + n] = '\0'; | newname[len + n] = '\0'; |
if (GETSTAT(newname, &fil_stbuf) < 0) | if (GETSTAT(newname, &fil_stbuf) < 0) |
|
Lines 903-909
build_temporary_name()
|
Link Here
|
|---|
|
strcpy(temporary_name, TMP_FILENAME_TEMPLATE); | strcpy(temporary_name, TMP_FILENAME_TEMPLATE); |
} | } |
else { | else { |
sprintf(temporary_name, "%s/lhXXXXXX", extract_directory); |
snprintf(temporary_name, sizeof(temporary_name), |
|
"%s/lhXXXXXX", extract_directory); |
} | } |
#ifdef MKSTEMP | #ifdef MKSTEMP |
mkstemp(temporary_name); | mkstemp(temporary_name); |
|
Lines 913-922
build_temporary_name()
|
Link Here
|
|---|
|
#else | #else |
char *p, *s; | char *p, *s; |
| |
strcpy(temporary_name, archive_name); |
strncpy(temporary_name, archive_name, sizeof(temporary_name)); |
|
temporary_name[sizeof(temporary_name)-1] = 0; |
for (p = temporary_name, s = (char *) 0; *p; p++) | for (p = temporary_name, s = (char *) 0; *p; p++) |
if (*p == '/') | if (*p == '/') |
s = p; | s = p; |
|
|
|
if( sizeof(temporary_name) - ((size_t) (s-temporary_name)) - 1 |
|
<= strlen("lhXXXXXX")) |
|
exit(-1); |
|
|
strcpy((s ? s + 1 : temporary_name), "lhXXXXXX"); | strcpy((s ? s + 1 : temporary_name), "lhXXXXXX"); |
#ifdef MKSTEMP | #ifdef MKSTEMP |
mkstemp(temporary_name); | mkstemp(temporary_name); |
|
|
| |
if (open_old_archive_1(archive_name, &fp)) | if (open_old_archive_1(archive_name, &fp)) |
return fp; | return fp; |
sprintf(expanded_archive_name, "%s.lzh", archive_name); |
snprintf(expanded_archive_name, sizeof(expanded_archive_name), |
|
"%s.lzh", archive_name); |
if (open_old_archive_1(expanded_archive_name, &fp)) { | if (open_old_archive_1(expanded_archive_name, &fp)) { |
archive_name = expanded_archive_name; | archive_name = expanded_archive_name; |
return fp; | return fp; |
|
|
* if ( (errno&0xffff)!=E_PNNF ) { archive_name = | * if ( (errno&0xffff)!=E_PNNF ) { archive_name = |
* expanded_archive_name; return NULL; } | * expanded_archive_name; return NULL; } |
*/ | */ |
sprintf(expanded_archive_name, "%s.lzs", archive_name); |
snprintf(expanded_archive_name, sizeof(expanded_archive_name), |
|
"%s.lzs", archive_name); |
if (open_old_archive_1(expanded_archive_name, &fp)) { | if (open_old_archive_1(expanded_archive_name, &fp)) { |
archive_name = expanded_archive_name; | archive_name = expanded_archive_name; |
return fp; | return fp; |