View | Details | Raw Unified
Collapse All | Expand All

(-) lha-114i.orig/src/lha_macro.h (-1 / +1 lines)
 Lines 53-59    Link Here 
#define SEEK_SET		0
#define SEEK_SET		0
#define SEEK_CUR		1
#define SEEK_CUR		1
#define SEEK_END		2
#define SEEK_END		2
#endif	/* SEEK_SET
#endif	/* SEEK_SET */
/* non-integral functions */
/* non-integral functions */
(-) lha-114i.orig/src/lharc.c (-6 / +21 lines)
 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);
 Lines 1052-1058   open_old_archive() Link Here 
	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;
 Lines 1061-1067   open_old_archive() Link Here 
	 * 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;
(-) lha-114i.orig/src/lhext.c (-7 / +12 lines)
 Lines 82-88   make_parent_path(name) Link Here 
	register char  *p;
	register char  *p;
	/* make parent directory name into PATH for recursive call */
	/* make parent directory name into PATH for recursive call */
	strcpy(path, name);
	memset(path, 0, sizeof(path));
	strncpy(path, name, sizeof(path)-1);
	for (p = path + strlen(path); p > path; p--)
	for (p = path + strlen(path); p > path; p--)
		if (p[-1] == '/') {
		if (p[-1] == '/') {
			*--p = '\0';
			*--p = '\0';
 Lines 212-220   extract_one(afp, hdr) Link Here 
	}
	}
	if (extract_directory)
	if (extract_directory)
		sprintf(name, "%s/%s", extract_directory, q);
		snprintf(name, sizeof(name), "%s/%s", extract_directory, q);
	else
	else {
		strcpy(name, q);
		strncpy(name, q, sizeof(name));
		name[sizeof(name) - 1] = '\0';
	}
	/* LZHDIRS_METHOD�����ĥإå��������å����� */
	/* LZHDIRS_METHOD�����ĥإå��������å����� */
 Lines 335-341   extract_one(afp, hdr) Link Here 
			if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_SYMLINK) {
			if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_SYMLINK) {
				char            buf[256], *bb1, *bb2;
				char            buf[256], *bb1, *bb2;
				int             l_code;
				int             l_code;
				strcpy(buf, name);
				strncpy(buf, name, sizeof(buf));
				buf[sizeof(buf)-1] = 0;
				bb1 = strtok(buf, "|");
				bb1 = strtok(buf, "|");
				bb2 = strtok(NULL, "|");
				bb2 = strtok(NULL, "|");
 Lines 365-373   extract_one(afp, hdr) Link Here 
				if (quiet != TRUE) {
				if (quiet != TRUE) {
					printf("Symbolic Link %s -> %s\n", bb1, bb2);
					printf("Symbolic Link %s -> %s\n", bb1, bb2);
				}
				}
				strcpy(name, bb1);	/* Symbolic's name set */
				strncpy(name, bb1, 255);	/* Symbolic's name set */
				name[255] = 0;
#else
#else
				sprintf(buf, "%s -> %s", bb1, bb2);
				sprintf(buf, sizeof(buf), "%s -> %s", bb1, bb2);
				warning("Can't make Symbolic Link", buf);
				warning("Can't make Symbolic Link", buf);
				return;
				return;
#endif
#endif
(-) lha-114i.orig/src/lhlist.c (-1 / +2 lines)
 Lines 250-256   list_one(hdr) Link Here 
			printf(" %s", hdr->name);
			printf(" %s", hdr->name);
		else {
		else {
			char            buf[256], *b1, *b2;
			char            buf[256], *b1, *b2;
			strcpy(buf, hdr->name);
			strncpy(buf, hdr->name, sizeof(buf));
			buf[sizeof(buf)-1] = 0;
			b1 = strtok(buf, "|");
			b1 = strtok(buf, "|");
			b2 = strtok(NULL, "|");
			b2 = strtok(NULL, "|");
			printf(" %s -> %s", b1, b2);
			printf(" %s -> %s", b1, b2);
(-) lha-114i.orig/src/util.c (-13 / +19 lines)
 Lines 276-296   rmdir(path) Link Here 
	char           *path;
	char           *path;
{
{
	int             stat, rtn = 0;
	int             stat, rtn = 0;
	char           *cmdname;
	pid_t           child;
	if ((cmdname = (char *) malloc(strlen(RMDIRPATH) + 1 + strlen(path) + 1))
	    == 0)
	/* XXX thomas: shell meta chars in path could exec commands */
	/* therefore we should avoid using system() */
	if ((child = fork()) < 0)
		return (-1);    /* fork error */
	else if (child) {       /* parent process */
		while (child != wait(&stat))    /* ignore signals */
			continue;
	}
	else {                  /* child process */
		execl(RMDIRPATH, "rmdir", path, (char *) 0);
		/* never come here except execl is error */
		return (-1);
		return (-1);
	strcpy(cmdname, RMDIRPATH);
	*(cmdname + strlen(RMDIRPATH)) = ' ';
	strcpy(cmdname + strlen(RMDIRPATH) + 1, path);
	if ((stat = system(cmdname)) < 0)
		rtn = -1;	/* fork or exec error */
	else if (stat) {	/* RMDIR command error */
		errno = EIO;
		rtn = -1;
	}
	}
	free(cmdname);
	if (stat != 0) {
	return (rtn);
		errno = EIO;    /* cannot get error num. */
		return (-1);
	}
	return (0);
}
}
/* ------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------ */