X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=client.c;h=2a86ea971bf7b871e08d469943eb18fce0a8c1d7;hb=19a8064ef4a2a826ee06ed061af970d1737cf840;hp=60f7c6ab82767cab31cf30443e07affa15c32b51;hpb=b4f5e72f1383499439c45acee627c022f06b6825;p=fio.git diff --git a/client.c b/client.c index 60f7c6ab..2a86ea97 100644 --- a/client.c +++ b/client.c @@ -123,11 +123,19 @@ static int read_ini_data(int fd, void *data, size_t size) char *p = data; int ret = 0; FILE *fp; + int dupfd; - fp = fdopen(dup(fd), "r"); - if (!fp) + dupfd = dup(fd); + if (dupfd < 0) return errno; + fp = fdopen(dupfd, "r"); + if (!fp) { + ret = errno; + close(dupfd); + goto out; + } + while (1) { ssize_t len; char buf[OPT_LEN_MAX+1], *sub; @@ -158,6 +166,7 @@ static int read_ini_data(int fd, void *data, size_t size) } fclose(fp); +out: return ret; }