Skip Menu |
 

From: Gilles Espinasse <g.esp@free.fr>
To: krb5-bugs@mit.edu
Subject: [PATCH] krb5 : tests, fix dbtest compilation warnings
Date: Fri, 31 May 2013 17:18:37 +0200
CC: Gilles Espinasse <g.esp@free.fr>
Download (untitled) / with headers
text/plain 5.9KiB
dbtest.c: In function 'main':
dbtest.c:187: warning: comparison between signed and unsigned integer expressions
dbtest.c:202: warning: comparison between signed and unsigned integer expressions
dbtest.c: In function 'get':
dbtest.c:379: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c:381: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c:389: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c: In function 'put':
dbtest.c:429: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c: In function 'rem':
dbtest.c:448: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c: In function 'seq':
dbtest.c:483: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c:485: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c:493: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c: In function 'dump':
dbtest.c:524: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c:526: warning: ignoring return value of 'write', declared with attribute warn_unused_result
dbtest.c: In function 'rfile':
dbtest.c:714: warning: ignoring return value of 'read', declared with attribute warn_unused_result

Casting to (void) does nothing with fortify in use for function declared __attribute__ ((warn_unused_result))
So check the returned value a minima.

Change XXlineno type to match lineno
Cast to ssize_t to fix remaining signed vs unsigned comparison

Signed-off-by: Gilles Espinasse <g.esp@free.fr>
---
src/plugins/kdb/db2/libdb2/test/dbtest.c | 45 +++++++++++++++++++-----------
1 file changed, 28 insertions(+), 17 deletions(-)

diff --git a/src/plugins/kdb/db2/libdb2/test/dbtest.c b/src/plugins/kdb/db2/libdb2/test/dbtest.c
index 210be87..7331be7 100644
--- a/src/plugins/kdb/db2/libdb2/test/dbtest.c
+++ b/src/plugins/kdb/db2/libdb2/test/dbtest.c
@@ -90,7 +90,7 @@ u_int flags; /* Current DB flags. */
int ofd = STDOUT_FILENO; /* Standard output fd. */

DB *XXdbp; /* Global for gdb. */
-int XXlineno; /* Fast breakpoint for gdb. */
+u_long XXlineno; /* Fast breakpoint for gdb. */

int
main(argc, argv)
@@ -199,7 +199,7 @@ main(argc, argv)
/* Don't display the newline, if CR at EOL. */
if (p[len - 2] == '\r')
--len;
- if (write(ofd, p + 1, len - 1) != len - 1 ||
+ if (write(ofd, p + 1, len - 1) != (ssize_t)len - 1 ||
write(ofd, "\n", 1) != 1)
err("write: %s", strerror(errno));
break;
@@ -376,9 +376,11 @@ get(dbp, kp)

switch (dbp->get(dbp, kp, &data, flags)) {
case 0:
- (void)write(ofd, data.data, data.size);
+ if (write(ofd, data.data, data.size) != (ssize_t)data.size)
+ err("write: %s", strerror(errno));
if (ofd == STDOUT_FILENO)
- (void)write(ofd, "\n", 1);
+ if (write(ofd, "\n", 1) !=1)
+ err("write: %s", strerror(errno));
break;
case -1:
err("line %lu: get: %s", lineno, strerror(errno));
@@ -386,7 +388,8 @@ get(dbp, kp)
case 1:
#define NOSUCHKEY "get failed, no such key\n"
if (ofd != STDOUT_FILENO) {
- (void)write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1);
+ if (write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1) != sizeof(NOSUCHKEY) - 1)
+ err("write: %s", strerror(errno));
exit(1);
} else
(void)fprintf(stderr, "%lu: %.*s: %s",
@@ -426,7 +429,8 @@ put(dbp, kp, dp)
err("line %lu: put: %s", lineno, strerror(errno));
/* NOTREACHED */
case 1:
- (void)write(ofd, NOOVERWRITE, sizeof(NOOVERWRITE) - 1);
+ if (write(ofd, NOOVERWRITE, sizeof(NOOVERWRITE) - 1) != sizeof(NOOVERWRITE) - 1)
+ err("write: %s", strerror(errno));
break;
}
}
@@ -444,9 +448,10 @@ rem(dbp, kp)
/* NOTREACHED */
case 1:
#define NOSUCHKEY "rem failed, no such key\n"
- if (ofd != STDOUT_FILENO)
- (void)write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1);
- else if (flags != R_CURSOR)
+ if (ofd != STDOUT_FILENO) {
+ if (write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1) != sizeof(NOSUCHKEY) - 1)
+ err("write: %s", strerror(errno));
+ } else if (flags != R_CURSOR)
(void)fprintf(stderr, "%lu: %.*s: %s",
lineno, (int) MIN(kp->size, 20), (char *) kp->data,
NOSUCHKEY);
@@ -480,18 +485,21 @@ seq(dbp, kp)

switch (dbp->seq(dbp, kp, &data, flags)) {
case 0:
- (void)write(ofd, data.data, data.size);
+ if (write(ofd, data.data, data.size) != (ssize_t)data.size)
+ err("write: %s", strerror(errno));
if (ofd == STDOUT_FILENO)
- (void)write(ofd, "\n", 1);
+ if (write(ofd, "\n", 1) != 1)
+ err("write: %s", strerror(errno));
break;
case -1:
err("line %lu: seq: %s", lineno, strerror(errno));
/* NOTREACHED */
case 1:
#define NOSUCHKEY "seq failed, no such key\n"
- if (ofd != STDOUT_FILENO)
- (void)write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1);
- else if (flags == R_CURSOR)
+ if (ofd != STDOUT_FILENO) {
+ if (write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1) != sizeof(NOSUCHKEY) - 1)
+ err("write: %s", strerror(errno));
+ } else if (flags == R_CURSOR)
(void)fprintf(stderr, "%lu: %.*s: %s",
lineno, (int) MIN(kp->size, 20), (char *) kp->data,
NOSUCHKEY);
@@ -521,9 +529,11 @@ dump(dbp, rev)
for (;; lflags = nflags)
switch (dbp->seq(dbp, &key, &data, lflags)) {
case 0:
- (void)write(ofd, data.data, data.size);
+ if (write(ofd, data.data, data.size) != (ssize_t)data.size)
+ err("write: %s", strerror(errno));
if (ofd == STDOUT_FILENO)
- (void)write(ofd, "\n", 1);
+ if (write(ofd, "\n", 1) != 1)
+ err("write: %s", strerror(errno));
break;
case 1:
goto done;
@@ -711,7 +721,8 @@ rfile(name, lenp)
#endif
if ((p = (void *)malloc((u_int)sb.st_size)) == NULL)
err("%s", strerror(errno));
- (void)read(fd, p, (int)sb.st_size);
+ if (read(fd, p, (int)sb.st_size) == -1)
+ err("%s", strerror(errno));
*lenp = sb.st_size;
(void)close(fd);
return (p);
--
1.7.10.4
Thanks. If it's equally convenient for you, it's a little more
convenient for us if you can submit github pull requests instead of
using the bug tracker. There's more information at:

http://k5wiki.kerberos.org/wiki/Contributing_code

but you don't really need to read it as long as you're only submitting
fixes.

https://github.com/krb5/krb5/commit/3662723a2857a3ad42cb267044e29f516232
cdf7
Author: Gilles Espinasse <g.esp@free.fr>
Commit: 3662723a2857a3ad42cb267044e29f516232cdf7
Branch: master
src/plugins/kdb/db2/libdb2/test/dbtest.c | 58 +++++++++++++++++++----
------
1 files changed, 38 insertions(+), 20 deletions(-)