← Commit list

9cac521f0

Denis Vlasenko
Denis Vlasenko
2006-09-09
SOURCE BUG Duration: 54s

Subject

using [xa]sprintf for string concatenation is neat and saves ~100 bytes according to bloatcheck. Also this fixes bug in rpm

SOURCE BUG

This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)

→ Bu hatanin tam hikayesini ve duzeltme diffini gor

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

archival/gzip.c+1 -3
@@ -1212,9 +1212,7 @@ int gzip_main(int argc, char **argv)
time_stamp = statBuf.st_ctime;
if (!tostdout) {
- path = xmalloc(strlen(argv[i]) + 4);
- strcpy(path, argv[i]);
- strcat(path, ".gz");
+ path = xasprintf("%s.gz", argv[i]);
/* Open output file */
#if (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1) && defined O_NOFOLLOW
archival/rpm.c+1 -2
@@ -290,8 +290,7 @@ static void fileaction_dobackup(char *filename, int fileref)
if (rpm_getint(RPMTAG_FILEFLAGS, fileref) & RPMFILE_CONFIG) { /* Only need to backup config files */
stat_res = lstat (filename, &oldfile);
if (stat_res == 0 && S_ISREG(oldfile.st_mode)) { /* File already exists - really should check MD5's etc to see if different */
- newname = xstrdup(filename);
- newname = strcat(newname, ".rpmorig");
+ newname = xasprintf("%s.rpmorig", filename);
copy_file(filename, newname, FILEUTILS_RECUR | FILEUTILS_PRESERVE_STATUS);
remove_file(filename, FILEUTILS_RECUR | FILEUTILS_FORCE);
free(newname);
coreutils/tr.c+1 -1
@@ -128,7 +128,7 @@ static unsigned int expand(const char *arg, char *buffer)
for (i = 'A'; i <= 'Z'; i++)
*buffer++ = i;
else if (strncmp(arg, "space", 5) == 0) {
- const char s[] = "\t\n\v\f\r ";
+ const char s[] = "\t\n\v\f\r ";
strcat((char*)buffer, s);
buffer += sizeof(s) - 1;
}
e2fsprogs/ext2fs/mkjournal.c+3 -2
@@ -322,8 +322,9 @@ errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t size, int flags)
char jfile[1024];
int fd, mount_flags, f;
- if ((retval = ext2fs_check_mount_point(fs->device_name, &mount_flags,
- jfile, sizeof(jfile)-10)))
+ retval = ext2fs_check_mount_point(fs->device_name, &mount_flags,
+ jfile, sizeof(jfile)-10);
+ if (retval)
return retval;
if (mount_flags & EXT2_MF_MOUNTED) {
procps/sysctl.c+3 -4
@@ -129,7 +129,7 @@ int sysctl_preload_file(const char *filename, int output)
}
while (fgets(oneline, sizeof(oneline) - 1, fp)) {
- oneline[sizeof(oneline) - 1] = 0;
+ oneline[sizeof(oneline) - 1] = '\0';
lineno++;
trim(oneline);
ptr = (char *) oneline;
@@ -156,9 +156,8 @@ int sysctl_preload_file(const char *filename, int output)
while ((*value == ' ' || *value == '\t') && *value != 0)
value++;
- strcpy(buffer, name);
- strcat(buffer, "=");
- strcat(buffer, value);
+ /* safe because sizeof(oneline) == sizeof(buffer) */
+ sprintf(buffer, "%s=%s", name, value);
sysctl_write_setting(buffer, output);
}
fclose(fp);
sysklogd/logger.c+1 -1
@@ -138,7 +138,7 @@ int logger_main(int argc, char **argv)
len += strlen(*argv);
message = xrealloc(message, len);
if(!i)
- message[0] = 0;
+ message[0] = '\0';
else
strcat(message, " ");
strcat(message, *argv);