From 06d82616a1fdc44191265284ac46dda5dbdb5eb9 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sat, 8 Aug 2009 02:16:40 -0400 Subject: [PATCH] Don't bail out if a read fails but there's still data available. --- src/libupkg.c | 6 +++--- src/uobject.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libupkg.c b/src/libupkg.c index 3f07095..6ee7ffa 100644 --- a/src/libupkg.c +++ b/src/libupkg.c @@ -171,7 +171,7 @@ static int pkg_init_names(struct upkg *pkg) /* Read some data into buffer. */ if (!feof(pkg->priv->f)) { rc = fread(buf+nbuf, 1, sizeof buf-nbuf, pkg->priv->f); - if (rc == 0) + if (rc == 0 && nbuf == 0) goto err; nbuf += rc; } @@ -236,7 +236,7 @@ static int pkg_init_exports(struct upkg *pkg) /* Read some data into buffer. */ if (!feof(pkg->priv->f)) { rc = fread(buf+nbuf, 1, sizeof buf-nbuf, pkg->priv->f); - if (rc == 0) + if (rc == 0 && nbuf == 0) goto err; nbuf += rc; } @@ -306,7 +306,7 @@ static int pkg_init_imports(struct upkg *pkg) /* Read some data into buffer. */ if (!feof(pkg->priv->f)) { rc = fread(buf+nbuf, 1, sizeof buf-nbuf, pkg->priv->f); - if (rc == 0) + if (rc == 0 && nbuf == 0) goto err; nbuf += rc; } diff --git a/src/uobject.c b/src/uobject.c index ec04e30..64e7c4c 100644 --- a/src/uobject.c +++ b/src/uobject.c @@ -157,7 +157,7 @@ static int deserialize(UObject *o, struct upkg_file *f) void *buf = priv->buf + priv->nbuf; size_t amt = sizeof priv->buf - priv->nbuf; rc = upkg_export_read(f, buf, amt); - if (rc == 0) + if (rc == 0 && priv->nbuf == 0) return -1; priv->nbuf += rc; } -- 2.43.0