Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/games/hunt Remove SHORTLEN and LONGLEN defines; use sizeof()...



details:   https://anonhg.NetBSD.org/src/rev/579f2d080c2b
branches:  trunk
changeset: 795026:579f2d080c2b
user:      dholland <dholland%NetBSD.org@localhost>
date:      Sun Mar 30 05:30:28 2014 +0000

description:
Remove SHORTLEN and LONGLEN defines; use sizeof() properly instead.
Fix two semi-compensating size bugs in wire transmission affecting
64-bit machines.

diffstat:

 games/hunt/hunt/connect.c        |  20 +++++++++++---------
 games/hunt/hunt/hunt.c           |  30 +++++++++++++++---------------
 games/hunt/hunt/hunt_private.h   |   4 ++--
 games/hunt/hunt/playit.c         |  12 ++++++++----
 games/hunt/huntd/answer.c        |  34 +++++++++++++++++-----------------
 games/hunt/huntd/hunt.h          |   4 ++--
 games/hunt/include/hunt_common.h |   6 ++----
 7 files changed, 57 insertions(+), 53 deletions(-)

diffs (truncated from 360 to 300 lines):

diff -r 473370f5d5b5 -r 579f2d080c2b games/hunt/hunt/connect.c
--- a/games/hunt/hunt/connect.c Sun Mar 30 05:14:47 2014 +0000
+++ b/games/hunt/hunt/connect.c Sun Mar 30 05:30:28 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: connect.c,v 1.10 2014/03/30 05:14:47 dholland Exp $    */
+/*     $NetBSD: connect.c,v 1.11 2014/03/30 05:30:28 dholland Exp $    */
 /*
  * Copyright (c) 1983-2003, Regents of the University of California.
  * All rights reserved.
@@ -32,31 +32,33 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: connect.c,v 1.10 2014/03/30 05:14:47 dholland Exp $");
+__RCSID("$NetBSD: connect.c,v 1.11 2014/03/30 05:30:28 dholland Exp $");
 #endif /* not lint */
 
 #include <string.h>
 #include <signal.h>
 #include <unistd.h>
+#include <assert.h>
 
 #include "hunt_common.h"
 #include "hunt_private.h"
 
 void
-do_connect(char *name, char team, long enter_status)
+do_connect(const char *name, size_t namelen, char team, int enter_status)
 {
        static int32_t uid;
-       static int32_t mode;
+       int32_t mode;
+       int32_t wire_status = htonl(enter_status);
 
        if (uid == 0)
                uid = htonl(getuid());
-       (void) write(huntsocket, &uid, LONGLEN);
-       (void) write(huntsocket, name, NAMELEN);
+       (void) write(huntsocket, &uid, sizeof(uid));
+       assert(namelen == WIRE_NAMELEN);
+       (void) write(huntsocket, name, namelen);
        (void) write(huntsocket, &team, 1);
-       enter_status = htonl(enter_status);
-       (void) write(huntsocket, &enter_status, LONGLEN);
+       (void) write(huntsocket, &wire_status, sizeof(wire_status));
        (void) strcpy(Buf, ttyname(fileno(stderr)));
-       (void) write(huntsocket, Buf, NAMELEN);
+       (void) write(huntsocket, Buf, WIRE_NAMELEN);
 #ifdef INTERNET
        if (Send_message != NULL)
                mode = C_MESSAGE;
diff -r 473370f5d5b5 -r 579f2d080c2b games/hunt/hunt/hunt.c
--- a/games/hunt/hunt/hunt.c    Sun Mar 30 05:14:47 2014 +0000
+++ b/games/hunt/hunt/hunt.c    Sun Mar 30 05:30:28 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: hunt.c,v 1.54 2014/03/30 05:14:47 dholland Exp $       */
+/*     $NetBSD: hunt.c,v 1.55 2014/03/30 05:30:28 dholland Exp $       */
 /*
  * Copyright (c) 1983-2003, Regents of the University of California.
  * All rights reserved.
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: hunt.c,v 1.54 2014/03/30 05:14:47 dholland Exp $");
+__RCSID("$NetBSD: hunt.c,v 1.55 2014/03/30 05:30:28 dholland Exp $");
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -94,7 +94,7 @@
 char map_key[256];                     /* what to map keys to */
 bool no_beep;
 
-static char name[NAMELEN];
+static char name[WIRE_NAMELEN];
 static char team = ' ';
 
 static int in_visual;
@@ -102,7 +102,7 @@
 extern int cur_row, cur_col;
 
 static void dump_scores(const struct sockaddr_storage *, socklen_t);
-static long env_init(long);
+static int env_init(int);
 static void fill_in_blanks(void);
 static void fincurs(void);
 static void rmnl(char *);
@@ -138,16 +138,16 @@
 {
        char *term;
        int c;
-       long enter_status;
+       int enter_status;
        bool Query_driver = false;
        bool Show_scores = false;
 
-       enter_status = env_init((long) Q_CLOAK);
+       enter_status = env_init(Q_CLOAK);
        while ((c = getopt(ac, av, "Sbcfh:l:mn:op:qst:w:")) != -1) {
                switch (c) {
                case 'l':       /* rsh compatibility */
                case 'n':
-                       (void) strncpy(name, optarg, NAMELEN);
+                       (void) strncpy(name, optarg, sizeof(name));
                        break;
                case 't':
                        team = *optarg;
@@ -268,7 +268,7 @@
 #endif
 #ifdef OTTO
        if (Otto_mode)
-               (void) strncpy(name, "otto", NAMELEN);
+               (void) strncpy(name, "otto", sizeof(name));
        else
 #endif
        fill_in_blanks();
@@ -350,7 +350,7 @@
                }
 #endif
 
-               do_connect(name, team, enter_status);
+               do_connect(name, sizeof(name), team, enter_status);
 #ifdef INTERNET
                if (Send_message != NULL) {
                        do_message();
@@ -658,8 +658,8 @@
        va_end(ap);
 }
 
-static long
-env_init(long enter_status)
+static int
+env_init(int enter_status)
 {
        int i;
        char *envp, *envname, *s;
@@ -690,11 +690,11 @@
                                envname = s + 1;
                                if ((s = strchr(envp, ',')) == NULL) {
                                        *envp = '\0';
-                                       strncpy(name, envname, NAMELEN);
+                                       strncpy(name, envname, sizeof(name));
                                        break;
                                }
                                *s = '\0';
-                               strncpy(name, envname, NAMELEN);
+                               strncpy(name, envname, sizeof(name));
                                envp = s + 1;
                        }
 #ifdef INTERNET
@@ -759,7 +759,7 @@
                }
                if (*envp != '\0') {
                        if (envname == NULL)
-                               strncpy(name, envp, NAMELEN);
+                               strncpy(name, envp, sizeof(name));
                        else
                                printf("unknown option %s\n", envp);
                }
@@ -782,7 +782,7 @@
                        putchar('\n');
        } else {
                printf("Enter your code name: ");
-               if (fgets(name, NAMELEN, stdin) == NULL)
+               if (fgets(name, sizeof(name), stdin) == NULL)
                        exit(1);
        }
        rmnl(name);
diff -r 473370f5d5b5 -r 579f2d080c2b games/hunt/hunt/hunt_private.h
--- a/games/hunt/hunt/hunt_private.h    Sun Mar 30 05:14:47 2014 +0000
+++ b/games/hunt/hunt/hunt_private.h    Sun Mar 30 05:30:28 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: hunt_private.h,v 1.8 2014/03/30 05:14:47 dholland Exp $        */
+/*     $NetBSD: hunt_private.h,v 1.9 2014/03/30 05:30:28 dholland Exp $        */
 
 /*
  * Copyright (c) 1983-2003, Regents of the University of California.
@@ -73,7 +73,7 @@
  */
 
 /* in connect.c */
-void do_connect(char *, char, long);
+void do_connect(const char *, size_t, char, int32_t);
 
 /* in hunt.c */
 __dead void bad_con(void);
diff -r 473370f5d5b5 -r 579f2d080c2b games/hunt/hunt/playit.c
--- a/games/hunt/hunt/playit.c  Sun Mar 30 05:14:47 2014 +0000
+++ b/games/hunt/hunt/playit.c  Sun Mar 30 05:30:28 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: playit.c,v 1.20 2014/03/30 05:14:47 dholland Exp $     */
+/*     $NetBSD: playit.c,v 1.21 2014/03/30 05:30:28 dholland Exp $     */
 /*
  * Copyright (c) 1983-2003, Regents of the University of California.
  * All rights reserved.
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: playit.c,v 1.20 2014/03/30 05:14:47 dholland Exp $");
+__RCSID("$NetBSD: playit.c,v 1.21 2014/03/30 05:30:28 dholland Exp $");
 #endif /* not lint */
 
 #include <sys/file.h>
@@ -93,8 +93,10 @@
        int ch;
        int y, x;
        uint32_t version;
+       ssize_t result;
 
-       if (read(huntsocket, &version, LONGLEN) != LONGLEN) {
+       result = read(huntsocket, &version, sizeof(version));
+       if (result != (ssize_t)sizeof(version)) {
                bad_con();
                /* NOTREACHED */
        }
@@ -435,8 +437,10 @@
 do_message(void)
 {
        uint32_t version;
+       ssize_t result;
 
-       if (read(huntsocket, &version, LONGLEN) != LONGLEN) {
+       result = read(huntsocket, &version, sizeof(version));
+       if (result != (ssize_t)sizeof(version)) {
                bad_con();
                /* NOTREACHED */
        }
diff -r 473370f5d5b5 -r 579f2d080c2b games/hunt/huntd/answer.c
--- a/games/hunt/huntd/answer.c Sun Mar 30 05:14:47 2014 +0000
+++ b/games/hunt/huntd/answer.c Sun Mar 30 05:30:28 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: answer.c,v 1.21 2014/03/30 01:44:37 dholland Exp $     */
+/*     $NetBSD: answer.c,v 1.22 2014/03/30 05:30:28 dholland Exp $     */
 /*
  * Copyright (c) 1983-2003, Regents of the University of California.
  * All rights reserved.
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: answer.c,v 1.21 2014/03/30 01:44:37 dholland Exp $");
+__RCSID("$NetBSD: answer.c,v 1.22 2014/03/30 05:30:28 dholland Exp $");
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -48,9 +48,9 @@
 
 #define SCOREDECAY     15
 
-static char Ttyname[NAMELEN];
+static char Ttyname[WIRE_NAMELEN];
 
-static IDENT *get_ident(uint32_t, uint32_t, char *, char);
+static IDENT *get_ident(uint32_t, uint32_t, const char *, char);
 static void stmonitor(PLAYER *);
 static void stplayer(PLAYER *, int);
 
@@ -59,10 +59,10 @@
 {
        PLAYER *pp;
        int newsock;
-       static u_long mode;
-       static char name[NAMELEN];
+       static uint32_t mode;
+       static char name[WIRE_NAMELEN];
        static char team;
-       static int enter_status;
+       static int32_t enter_status;
        static socklen_t socklen;
        static uint32_t machine;
        static uint32_t uid;
@@ -109,15 +109,15 @@
        }
 
        version = htonl((uint32_t) HUNT_VERSION);
-       (void) write(newsock, &version, LONGLEN);
-       (void) read(newsock, &uid, LONGLEN);
+       (void) write(newsock, &version, sizeof(version));
+       (void) read(newsock, &uid, sizeof(uid));
        uid = ntohl(uid);
-       (void) read(newsock, name, NAMELEN);
+       (void) read(newsock, name, sizeof(name));
        (void) read(newsock, &team, 1);
-       (void) read(newsock, &enter_status, LONGLEN);
-       enter_status = ntohl((unsigned long) enter_status);
-       (void) read(newsock, Ttyname, NAMELEN);
-       (void) read(newsock, &mode, sizeof mode);
+       (void) read(newsock, &enter_status, sizeof(enter_status));
+       enter_status = ntohl(enter_status);
+       (void) read(newsock, Ttyname, sizeof(Ttyname));
+       (void) read(newsock, &mode, sizeof(mode));
        mode = ntohl(mode);
 
        /*
@@ -398,7 +398,7 @@
  *     Get the score structure of a player
  */
 static IDENT *
-get_ident(uint32_t machine, uint32_t uid, char *name, char team)



Home | Main Index | Thread Index | Old Index