From: Roy Marples Date: Fri, 16 Aug 2019 20:26:34 +0000 (+0100) Subject: print_option: restore dhcpcd-7 behaviour on invalid env option X-Git-Tag: v8.0.3~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2dae918bcbe9720087e496114bd9b7c80e3b9bf9;p=thirdparty%2Fdhcpcd.git print_option: restore dhcpcd-7 behaviour on invalid env option By not printing it. --- diff --git a/src/dhcp-common.c b/src/dhcp-common.c index b27bb14e..1f16f2cb 100644 --- a/src/dhcp-common.c +++ b/src/dhcp-common.c @@ -622,13 +622,14 @@ print_option(FILE *fp, const char *prefix, const struct dhcp_opt *opt, int vname, const uint8_t *data, size_t dl, const char *ifname) { + fpos_t fp_pos; const uint8_t *e, *t; uint16_t u16; int16_t s16; uint32_t u32; int32_t s32; struct in_addr addr; - ssize_t sl, ret; + ssize_t sl; size_t l; /* Ensure a valid length */ @@ -636,8 +637,10 @@ print_option(FILE *fp, const char *prefix, const struct dhcp_opt *opt, if ((ssize_t)dl == -1) return 0; - if (fprintf(fp, "%s", prefix) == -1) + if (fgetpos(fp, &fp_pos) == -1) return -1; + if (fprintf(fp, "%s", prefix) == -1) + goto err; /* We printed something, so always goto err from now-on * to terminate the string. */ @@ -764,17 +767,13 @@ print_option(FILE *fp, const char *prefix, const struct dhcp_opt *opt, } done: - ret = 1; - goto out; - -err: - ret = -1; - goto out; - -out: if (fputc('\0', fp) == EOF) return -1; - return ret; + return 1; + +err: + (void)fsetpos(fp, &fp_pos); + return -1; } int