Source-Changes-HG archive

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

[src/trunk]: src/usr.sbin/rpc.pcnfsd Add a statuslen argument to get_pr_statu...



details:   https://anonhg.NetBSD.org/src/rev/241c8afd0124
branches:  trunk
changeset: 328219:241c8afd0124
user:      apb <apb%NetBSD.org@localhost>
date:      Sat Mar 29 18:54:36 2014 +0000

description:
Add a statuslen argument to get_pr_status(), and use it
as the length in a call to strlcpy().  The previous code would
have used the size of a pointer as the length.

diffstat:

 usr.sbin/rpc.pcnfsd/extern.h       |   4 ++--
 usr.sbin/rpc.pcnfsd/pcnfsd_print.c |  14 ++++++++------
 usr.sbin/rpc.pcnfsd/pcnfsd_v2.c    |   4 ++--
 3 files changed, 12 insertions(+), 10 deletions(-)

diffs (99 lines):

diff -r b11f483073ce -r 241c8afd0124 usr.sbin/rpc.pcnfsd/extern.h
--- a/usr.sbin/rpc.pcnfsd/extern.h      Sat Mar 29 18:23:00 2014 +0000
+++ b/usr.sbin/rpc.pcnfsd/extern.h      Sat Mar 29 18:54:36 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: extern.h,v 1.2 2009/04/18 13:02:36 lukem Exp $ */
+/*     $NetBSD: extern.h,v 1.3 2014/03/29 18:54:36 apb Exp $   */
 
 extern int             interrupted;
 extern pr_list         printers;
@@ -19,7 +19,7 @@
 void           free_pr_queue_item __P((pr_queue));
 struct passwd  *get_password __P((char *));
 pirstat                get_pr_status __P((printername, bool_t *, bool_t *, int *,
-                   bool_t *, char *));
+                   bool_t *, char *, size_t));
 void          *grab __P((int));
 pcrstat                pr_cancel __P((char *, char *, char *));
 pirstat                pr_init __P((char *, char *, char **));
diff -r b11f483073ce -r 241c8afd0124 usr.sbin/rpc.pcnfsd/pcnfsd_print.c
--- a/usr.sbin/rpc.pcnfsd/pcnfsd_print.c        Sat Mar 29 18:23:00 2014 +0000
+++ b/usr.sbin/rpc.pcnfsd/pcnfsd_print.c        Sat Mar 29 18:54:36 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pcnfsd_print.c,v 1.12 2011/08/16 14:29:16 mbalmer Exp $        */
+/*     $NetBSD: pcnfsd_print.c,v 1.13 2014/03/29 18:54:36 apb Exp $    */
 
 /* RE_SID: @(%)/usr/dosnfs/shades_SCCS/unix/pcnfsd/v2/src/SCCS/s.pcnfsd_print.c 1.7 92/01/24 19:58:58 SMI */
 /*
@@ -904,13 +904,14 @@
 */
 
 pirstat
-get_pr_status(pn, avail, printing, qlen, needs_operator, status)
+get_pr_status(pn, avail, printing, qlen, needs_operator, status, statuslen)
        printername pn;
        bool_t *avail;
        bool_t *printing;
        int    *qlen;
        bool_t *needs_operator;
        char   *status;
+       size_t statuslen;
 {
        char    buff[256];
        char    cmd[64];
@@ -949,10 +950,10 @@
                        if (!strstr(buff, "disabled"))
                                *printing = TRUE;
                        if (strstr(buff, "printing"))
-                               strlcpy(status, "printing", sizeof(status));
+                               strlcpy(status, "printing", statuslen);
                        else
                                if (strstr(buff, "idle"))
-                                       strlcpy(status, "idle", sizeof(status));
+                                       strlcpy(status, "idle", statuslen);
                        continue;
                }
                if (!strncmp(buff, "UX:", 3)) {
@@ -968,13 +969,14 @@
  * BSD way: lpc status
  */
 pirstat
-get_pr_status(pn, avail, printing, qlen, needs_operator, status)
+get_pr_status(pn, avail, printing, qlen, needs_operator, status, statuslen)
        printername pn;
        bool_t *avail;
        bool_t *printing;
        int    *qlen;
        bool_t *needs_operator;
        char   *status;
+       size_t statuslen;
 {
        char    cmd[128];
        char    buff[256];
@@ -1058,7 +1060,7 @@
                            strstr(buff2, "error") != NULL)
                                *needs_operator = TRUE;
                        if (*needs_operator || strstr(buff2, "waiting") != NULL)
-                               strlcpy(status, cp, sizeof(status));
+                               strlcpy(status, cp, statuslen);
                }
                pstat = PI_RES_OK;
                break;
diff -r b11f483073ce -r 241c8afd0124 usr.sbin/rpc.pcnfsd/pcnfsd_v2.c
--- a/usr.sbin/rpc.pcnfsd/pcnfsd_v2.c   Sat Mar 29 18:23:00 2014 +0000
+++ b/usr.sbin/rpc.pcnfsd/pcnfsd_v2.c   Sat Mar 29 18:54:36 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pcnfsd_v2.c,v 1.12 2011/10/07 10:46:29 joerg Exp $     */
+/*     $NetBSD: pcnfsd_v2.c,v 1.13 2014/03/29 18:54:36 apb Exp $       */
 
 /* RE_SID: @(%)/usr/dosnfs/shades_SCCS/unix/pcnfsd/v2/src/SCCS/s.pcnfsd_v2.c 1.2 91/12/18 13:26:13 SMI */
 /*
@@ -238,7 +238,7 @@
        static char status[128];
 
        res.stat = get_pr_status(arg->pn, &res.avail, &res.printing,
-           &res.qlen, &res.needs_operator, &status[0]);
+           &res.qlen, &res.needs_operator, &status[0], sizeof(status));
        res.status = &status[0];
        res.cm = &no_comment[0];
 



Home | Main Index | Thread Index | Old Index