diff options
| author | Ron Yorston <rmy@pobox.com> | 2018-11-28 10:28:18 +0000 |
|---|---|---|
| committer | Ron Yorston <rmy@pobox.com> | 2018-11-28 10:28:18 +0000 |
| commit | 2a69a2200a141c1504b662eca64b802cdab71b12 (patch) | |
| tree | eab0cc01852db237a26052a83c8f582ed92b7cd9 /miscutils | |
| parent | 97ca1f4b955f486cd26461cb09185335483d2921 (diff) | |
| parent | 572dfb8e78323b9837f7c5e3369ee233a440b8f2 (diff) | |
| download | busybox-w32-2a69a2200a141c1504b662eca64b802cdab71b12.tar.gz busybox-w32-2a69a2200a141c1504b662eca64b802cdab71b12.tar.bz2 busybox-w32-2a69a2200a141c1504b662eca64b802cdab71b12.zip | |
Merge branch 'busybox' into merge
Diffstat (limited to 'miscutils')
| -rw-r--r-- | miscutils/bbconfig.c | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/miscutils/bbconfig.c b/miscutils/bbconfig.c index aa42de648..077e03c5d 100644 --- a/miscutils/bbconfig.c +++ b/miscutils/bbconfig.c | |||
| @@ -44,29 +44,10 @@ int bbconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | |||
| 44 | int bbconfig_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) | 44 | int bbconfig_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) |
| 45 | { | 45 | { |
| 46 | #if ENABLE_FEATURE_COMPRESS_BBCONFIG | 46 | #if ENABLE_FEATURE_COMPRESS_BBCONFIG |
| 47 | bunzip_data *bd; | 47 | const char *outbuf = unpack_bz2_data(bbconfig_config_bz2, |
| 48 | int i; | 48 | sizeof(bbconfig_config_bz2), sizeof(bbconfig_config)); |
| 49 | jmp_buf jmpbuf; | 49 | if (outbuf) { |
| 50 | 50 | full_write1_str(outbuf); | |
| 51 | /* Setup for I/O error handling via longjmp */ | ||
| 52 | i = setjmp(jmpbuf); | ||
| 53 | if (i == 0) { | ||
| 54 | i = start_bunzip(&jmpbuf, | ||
| 55 | &bd, | ||
| 56 | /* src_fd: */ -1, | ||
| 57 | /* inbuf: */ bbconfig_config_bz2, | ||
| 58 | /* len: */ sizeof(bbconfig_config_bz2) | ||
| 59 | ); | ||
| 60 | } | ||
| 61 | /* read_bunzip can longjmp and end up here with i != 0 | ||
| 62 | * on read data errors! Not trivial */ | ||
| 63 | if (i == 0) { | ||
| 64 | /* Cannot use xmalloc: will leak bd in NOFORK case! */ | ||
| 65 | char *outbuf = malloc_or_warn(sizeof(bbconfig_config)); | ||
| 66 | if (outbuf) { | ||
| 67 | read_bunzip(bd, outbuf, sizeof(bbconfig_config)); | ||
| 68 | full_write1_str(outbuf); | ||
| 69 | } | ||
| 70 | } | 51 | } |
| 71 | #else | 52 | #else |
| 72 | full_write1_str(bbconfig_config); | 53 | full_write1_str(bbconfig_config); |
