Compare commits
No commits in common. 'i8c' and 'c9' have entirely different histories.
@ -1,104 +0,0 @@
|
|||||||
From eb22398e59ae2d17bfc444400cb688c82448cb92 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Date: Wed, 12 Sep 2018 14:46:05 +1000
|
|
||||||
Subject: [PATCH app/sessreg] Replace strncpy calls with a sane version that
|
|
||||||
always terminates
|
|
||||||
|
|
||||||
Fixes coverity complaints about potentially unterminated strings
|
|
||||||
---
|
|
||||||
sessreg.c | 26 +++++++++++++++++---------
|
|
||||||
1 file changed, 17 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/sessreg.c b/sessreg.c
|
|
||||||
index 0a8fdb2..53b30b0 100644
|
|
||||||
--- a/sessreg.c
|
|
||||||
+++ b/sessreg.c
|
|
||||||
@@ -192,6 +192,14 @@ sysnerr (int x, const char *s)
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void
|
|
||||||
+safe_strncpy(char *dest, const char *src, size_t n)
|
|
||||||
+{
|
|
||||||
+ (void)strncpy(dest, src, n);
|
|
||||||
+ if (n > 0)
|
|
||||||
+ dest[n - 1] = '\0';
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int
|
|
||||||
main (int argc, char **argv)
|
|
||||||
{
|
|
||||||
@@ -406,9 +414,9 @@ main (int argc, char **argv)
|
|
||||||
memset(&ll, 0, sizeof(ll));
|
|
||||||
ll.ll_time = current_time;
|
|
||||||
if (line)
|
|
||||||
- (void) strncpy (ll.ll_line, line, sizeof (ll.ll_line));
|
|
||||||
+ safe_strncpy (ll.ll_line, line, sizeof (ll.ll_line));
|
|
||||||
if (host_name)
|
|
||||||
- (void) strncpy (ll.ll_host, host_name, sizeof (ll.ll_host));
|
|
||||||
+ safe_strncpy (ll.ll_host, host_name, sizeof (ll.ll_host));
|
|
||||||
|
|
||||||
sysnerr (write (llog, (char *) &ll, sizeof (ll))
|
|
||||||
== sizeof (ll), "write lastlog entry");
|
|
||||||
@@ -429,11 +437,11 @@ set_utmp (struct utmp *u, char *line, char *user, char *host, time_t date, int a
|
|
||||||
{
|
|
||||||
memset (u, 0, sizeof (*u));
|
|
||||||
if (line)
|
|
||||||
- (void) strncpy (u->ut_line, line, sizeof (u->ut_line));
|
|
||||||
+ safe_strncpy (u->ut_line, line, sizeof (u->ut_line));
|
|
||||||
else
|
|
||||||
memset (u->ut_line, 0, sizeof (u->ut_line));
|
|
||||||
if (addp && user)
|
|
||||||
- (void) strncpy (u->ut_name, user, sizeof (u->ut_name));
|
|
||||||
+ safe_strncpy (u->ut_name, user, sizeof (u->ut_name));
|
|
||||||
else
|
|
||||||
memset (u->ut_name, 0, sizeof (u->ut_name));
|
|
||||||
#ifdef HAVE_STRUCT_UTMP_UT_ID
|
|
||||||
@@ -451,7 +459,7 @@ set_utmp (struct utmp *u, char *line, char *user, char *host, time_t date, int a
|
|
||||||
i -= sizeof (u->ut_id);
|
|
||||||
else
|
|
||||||
i = 0;
|
|
||||||
- (void) strncpy (u->ut_id, line + i, sizeof (u->ut_id));
|
|
||||||
+ safe_strncpy (u->ut_id, line + i, sizeof (u->ut_id));
|
|
||||||
} else
|
|
||||||
memset (u->ut_id, 0, sizeof (u->ut_id));
|
|
||||||
#endif
|
|
||||||
@@ -469,7 +477,7 @@ set_utmp (struct utmp *u, char *line, char *user, char *host, time_t date, int a
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_STRUCT_UTMP_UT_HOST
|
|
||||||
if (addp && host)
|
|
||||||
- (void) strncpy (u->ut_host, host, sizeof (u->ut_host));
|
|
||||||
+ safe_strncpy (u->ut_host, host, sizeof (u->ut_host));
|
|
||||||
else
|
|
||||||
memset (u->ut_host, 0, sizeof (u->ut_host));
|
|
||||||
#endif
|
|
||||||
@@ -513,7 +521,7 @@ set_utmpx (struct utmpx *u, const char *line, const char *user,
|
|
||||||
if(strcmp(line, ":0") == 0)
|
|
||||||
(void) strcpy(u->ut_line, "console");
|
|
||||||
else
|
|
||||||
- (void) strncpy (u->ut_line, line, sizeof (u->ut_line));
|
|
||||||
+ safe_strncpy (u->ut_line, line, sizeof (u->ut_line));
|
|
||||||
|
|
||||||
strncpy(u->ut_host, line, sizeof(u->ut_host));
|
|
||||||
#ifdef HAVE_STRUCT_UTMPX_UT_SYSLEN
|
|
||||||
@@ -523,7 +531,7 @@ set_utmpx (struct utmpx *u, const char *line, const char *user,
|
|
||||||
else
|
|
||||||
memset (u->ut_line, 0, sizeof (u->ut_line));
|
|
||||||
if (addp && user)
|
|
||||||
- (void) strncpy (u->ut_user, user, sizeof (u->ut_user));
|
|
||||||
+ safe_strncpy (u->ut_user, user, sizeof (u->ut_user));
|
|
||||||
else
|
|
||||||
memset (u->ut_user, 0, sizeof (u->ut_user));
|
|
||||||
|
|
||||||
@@ -541,7 +549,7 @@ set_utmpx (struct utmpx *u, const char *line, const char *user,
|
|
||||||
i -= sizeof (u->ut_id);
|
|
||||||
else
|
|
||||||
i = 0;
|
|
||||||
- (void) strncpy (u->ut_id, line + i, sizeof (u->ut_id));
|
|
||||||
+ safe_strncpy (u->ut_id, line + i, sizeof (u->ut_id));
|
|
||||||
|
|
||||||
/* make sure there is no entry using identical ut_id */
|
|
||||||
if (!UtmpxIdOpen(u->ut_id) && addp) {
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,116 +0,0 @@
|
|||||||
From 3ea8f02027b18cf06774c8f26a719e321e9a78f2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Date: Wed, 12 Sep 2018 14:49:21 +1000
|
|
||||||
Subject: [PATCH xinput] property: plug a memory leak
|
|
||||||
|
|
||||||
Not that it matters since we'll exit after this call anyway, but coverity is
|
|
||||||
unhappy and that makes us all unhappy, doesn't it?
|
|
||||||
|
|
||||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
---
|
|
||||||
src/property.c | 27 +++++++++++++++------------
|
|
||||||
1 file changed, 15 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/property.c b/src/property.c
|
|
||||||
index e4a46f8..071f80f 100644
|
|
||||||
--- a/src/property.c
|
|
||||||
+++ b/src/property.c
|
|
||||||
@@ -610,19 +610,20 @@ do_set_prop_xi2(Display *dpy, Atom type, int format, int argc, char **argv, char
|
|
||||||
unsigned char *c;
|
|
||||||
int16_t *s;
|
|
||||||
int32_t *l;
|
|
||||||
- } data;
|
|
||||||
+ } data = { NULL };
|
|
||||||
+ int rc = EXIT_FAILURE;
|
|
||||||
|
|
||||||
if (argc < 3)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Usage: xinput %s %s\n", n, desc);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
info = xi2_find_device_info(dpy, argv[0]);
|
|
||||||
if (!info)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "unable to find device %s\n", argv[0]);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
name = argv[1];
|
|
||||||
@@ -631,7 +632,7 @@ do_set_prop_xi2(Display *dpy, Atom type, int format, int argc, char **argv, char
|
|
||||||
|
|
||||||
if (prop == None) {
|
|
||||||
fprintf(stderr, "invalid property '%s'\n", name);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
float_atom = XInternAtom(dpy, "FLOAT", False);
|
|
||||||
@@ -643,7 +644,7 @@ do_set_prop_xi2(Display *dpy, Atom type, int format, int argc, char **argv, char
|
|
||||||
&bytes_after, &data.c) != Success) {
|
|
||||||
fprintf(stderr, "failed to get property type and format for '%s'\n",
|
|
||||||
name);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
} else {
|
|
||||||
if (type == None)
|
|
||||||
type = old_type;
|
|
||||||
@@ -657,7 +658,7 @@ do_set_prop_xi2(Display *dpy, Atom type, int format, int argc, char **argv, char
|
|
||||||
if (type == None) {
|
|
||||||
fprintf(stderr, "property '%s' doesn't exist, you need to specify "
|
|
||||||
"its type and format\n", name);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
data.c = calloc(nelements, sizeof(int32_t));
|
|
||||||
@@ -678,36 +679,38 @@ do_set_prop_xi2(Display *dpy, Atom type, int format, int argc, char **argv, char
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
fprintf(stderr, "unexpected size for property %s", name);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
} else if (type == float_atom) {
|
|
||||||
if (format != 32) {
|
|
||||||
fprintf(stderr, "unexpected format %d for property '%s'\n",
|
|
||||||
format, name);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
*(float *)(data.l + i) = strtod(argv[2 + i], &endptr);
|
|
||||||
if (endptr == argv[2 + i]) {
|
|
||||||
fprintf(stderr, "argument %s could not be parsed\n", argv[2 + i]);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
} else if (type == XA_ATOM) {
|
|
||||||
if (format != 32) {
|
|
||||||
fprintf(stderr, "unexpected format %d for property '%s'\n",
|
|
||||||
format, name);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
data.l[i] = parse_atom(dpy, argv[2 + i]);
|
|
||||||
} else {
|
|
||||||
fprintf(stderr, "unexpected type for property '%s'\n", name);
|
|
||||||
- return EXIT_FAILURE;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
XIChangeProperty(dpy, info->deviceid, prop, type, format, PropModeReplace,
|
|
||||||
data.c, nelements);
|
|
||||||
+ rc = EXIT_SUCCESS;
|
|
||||||
+out:
|
|
||||||
free(data.c);
|
|
||||||
- return EXIT_SUCCESS;
|
|
||||||
+ return rc;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,168 +0,0 @@
|
|||||||
diff -Naur sessreg-1.1.0.old/man/filenames.sed.c sessreg-1.1.0/man/filenames.sed.c
|
|
||||||
--- sessreg-1.1.0.old/man/filenames.sed.c 2015-04-30 13:58:47.780569645 +0200
|
|
||||||
+++ sessreg-1.1.0/man/filenames.sed.c 1970-01-01 01:00:00.000000000 +0100
|
|
||||||
@@ -1,36 +0,0 @@
|
|
||||||
-#include "sessreg.h"
|
|
||||||
-
|
|
||||||
-#ifdef UTMPX_FILE
|
|
||||||
-# define UTF UTMPX_FILE
|
|
||||||
-# define UTM utmpx
|
|
||||||
-/* delete utmp-only content */
|
|
||||||
-/__BEGIN_UTMP_ONLY__/,/__END_UTMP_ONLY__/ d
|
|
||||||
-#else
|
|
||||||
-# define UTF UTMP_FILE
|
|
||||||
-# define UTM utmp
|
|
||||||
-/* delete utmpx-only content */
|
|
||||||
-/__BEGIN_UTMPX_ONLY__/,/__END_UTMPX_ONLY__/ d
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-#ifdef WTMPX_FILE
|
|
||||||
-# define WTF WTMPX_FILE
|
|
||||||
-# define WTM wtmpx
|
|
||||||
-#else
|
|
||||||
-# define WTF WTMP_FILE
|
|
||||||
-# define WTM wtmp
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-#ifndef TTYS_FILE
|
|
||||||
-# define TTYS_FILE "/etc/ttys"
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-#ifndef LLOG_FILE
|
|
||||||
-# define LLOG_FILE "/var/log/lastlog"
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-s|__utmp_manpage__|UTM|g
|
|
||||||
-s|__utmp_file__|UTF|g
|
|
||||||
-s|__wtmp_manpage__|WTM|g
|
|
||||||
-s|__wtmp_file__|WTF|g
|
|
||||||
-s|__ttys_file__|TTYS_FILE|g
|
|
||||||
-s|__lastlog_file__|LLOG_FILE|g
|
|
||||||
diff -Naur sessreg-1.1.0.old/man/Makefile.am sessreg-1.1.0/man/Makefile.am
|
|
||||||
--- sessreg-1.1.0.old/man/Makefile.am 2015-04-30 13:58:47.780569645 +0200
|
|
||||||
+++ sessreg-1.1.0/man/Makefile.am 2015-04-30 14:10:41.420249238 +0200
|
|
||||||
@@ -3,20 +3,11 @@
|
|
||||||
appman_PRE = sessreg.man
|
|
||||||
appman_DATA = $(appman_PRE:man=$(APP_MAN_SUFFIX))
|
|
||||||
|
|
||||||
-EXTRA_DIST = $(appman_PRE) filenames.sed.c
|
|
||||||
-CLEANFILES = $(appman_DATA) filenames.sed
|
|
||||||
+EXTRA_DIST = $(appman_PRE)
|
|
||||||
+CLEANFILES = $(appman_DATA)
|
|
||||||
SUFFIXES = .$(APP_MAN_SUFFIX) .man
|
|
||||||
|
|
||||||
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
|
|
||||||
-filenames.sed: filenames.sed.c
|
|
||||||
- $(AM_V_GEN)$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
|
||||||
- $(AM_CPPFLAGS) $(CPPFLAGS) $(srcdir)/filenames.sed.c | \
|
|
||||||
- $(SED) -n -e '/s|__/ p' -e '/^\/__/ p' > $@
|
|
||||||
-
|
|
||||||
-# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
|
|
||||||
-MAN_SUBSTS += -f filenames.sed
|
|
||||||
-
|
|
||||||
-sessreg.$(APP_MAN_SUFFIX): filenames.sed
|
|
||||||
|
|
||||||
.man.$(APP_MAN_SUFFIX):
|
|
||||||
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
|
|
||||||
diff -Naur sessreg-1.1.0.old/man/sessreg.man sessreg-1.1.0/man/sessreg.man
|
|
||||||
--- sessreg-1.1.0.old/man/sessreg.man 2015-04-30 13:58:47.780569645 +0200
|
|
||||||
+++ sessreg-1.1.0/man/sessreg.man 2015-04-30 14:11:47.134127555 +0200
|
|
||||||
@@ -24,11 +24,11 @@
|
|
||||||
.\"
|
|
||||||
.TH SESSREG __appmansuffix__ __xorgversion__
|
|
||||||
.SH NAME
|
|
||||||
-sessreg \- manage __utmp_manpage__/__wtmp_manpage__ entries for non-init clients
|
|
||||||
+sessreg \- manage utmp (__filemansuffix__)/wtmp (__filemansuffix__) entries for non-init clients
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B sessreg
|
|
||||||
-[-w \fI__wtmp_manpage__-file\fP]
|
|
||||||
-[-u \fI__utmp_manpage__-file\fP]
|
|
||||||
+[-w \fIwtmp (__filemansuffix__)-file\fP]
|
|
||||||
+[-u \fIutmp (__filemansuffix__)-file\fP]
|
|
||||||
[-L \fIlastlog-file\fP]
|
|
||||||
[-l \fIline-name\fP]
|
|
||||||
[-h \fIhost-name\fP]
|
|
||||||
@@ -41,25 +41,25 @@
|
|
||||||
\fIuser-name\fP
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.PP
|
|
||||||
-\fISessreg\fP is a simple program for managing __utmp_manpage__/__wtmp_manpage__ and lastlog
|
|
||||||
+\fISessreg\fP is a simple program for managing utmp (__filemansuffix__)/wtmp (__filemansuffix__) and lastlog
|
|
||||||
entries for xdm sessions.
|
|
||||||
.\" __BEGIN_UTMP_ONLY__
|
|
||||||
.PP
|
|
||||||
System V has a better interface to utmp than BSD; it
|
|
||||||
dynamically allocates entries in the file, instead of writing them at fixed
|
|
||||||
positions indexed by position in
|
|
||||||
-.BR __ttys_file__ .
|
|
||||||
+.BR /etc/ttys .
|
|
||||||
.PP
|
|
||||||
To manage BSD-style utmp files, \fIsessreg\fP has two strategies. In
|
|
||||||
conjunction with xdm, the -x option counts the number of lines in
|
|
||||||
-.B __ttys_file__
|
|
||||||
+.B /etc/ttys
|
|
||||||
and then adds to that the number of the line in the Xservers file which
|
|
||||||
specifies the display. The display name must be specified as the
|
|
||||||
"line-name" using the -l option. This sum is used as the "slot-number" in
|
|
||||||
the utmp file that this entry will be written at. In the more general case,
|
|
||||||
the -s option specifies the slot-number directly. If for some strange reason
|
|
||||||
your system uses a file other than
|
|
||||||
-.B __ttys_file__
|
|
||||||
+.B /etc/ttys
|
|
||||||
to manage init, the -t option can direct
|
|
||||||
\fIsessreg\fP to look elsewhere for a count of terminal sessions.
|
|
||||||
.PP
|
|
||||||
@@ -95,17 +95,17 @@
|
|
||||||
sessreg -d -l $DISPLAY -x /etc/X11/xdm/Xservers $USER
|
|
||||||
.fi
|
|
||||||
.SH OPTIONS
|
|
||||||
-.IP "\fB-w\fP \fI__wtmp_manpage__-file\fP"
|
|
||||||
-This specifies an alternate __wtmp_manpage__ file, instead of
|
|
||||||
-.BR __wtmp_file__ .
|
|
||||||
-The special name "none" disables writing records to the __wtmp_manpage__ file.
|
|
||||||
-.IP "\fB-u\fP \fI__utmp_manpage__-file\fP"
|
|
||||||
-This specifies an alternate __utmp_manpage__ file, instead of
|
|
||||||
-.BR __utmp_file__ .
|
|
||||||
-The special name "none" disables writing records to the __utmp_manpage__ file.
|
|
||||||
+.IP "\fB-w\fP \fIwtmp (__filemansuffix__)-file\fP"
|
|
||||||
+This specifies an alternate wtmp (__filemansuffix__) file, instead of
|
|
||||||
+.BR /var/log/wtmp .
|
|
||||||
+The special name "none" disables writing records to the wtmp (__filemansuffix__) file.
|
|
||||||
+.IP "\fB-u\fP \fIutmp (__filemansuffix__)-file\fP"
|
|
||||||
+This specifies an alternate utmp (__filemansuffix__) file, instead of
|
|
||||||
+.BR /var/run/utmp .
|
|
||||||
+The special name "none" disables writing records to the utmp (__filemansuffix__) file.
|
|
||||||
.IP "\fB-L\fP \fIlastlog-file\fP"
|
|
||||||
This specifies an alternate lastlog file, instead of
|
|
||||||
-.BR __lastlog_file__ ,
|
|
||||||
+.BR /var/log/lastlog ,
|
|
||||||
if the platform supports lastlog files.
|
|
||||||
The special name "none" disables writing records to the lastlog file.
|
|
||||||
.IP "\fB-l\fP \fIline-name\fP"
|
|
||||||
@@ -122,7 +122,7 @@
|
|
||||||
.\" __BEGIN_UTMP_ONLY__
|
|
||||||
Each potential session has a unique slot number in BSD systems, most are
|
|
||||||
identified by the position of the \fIline-name\fP in the
|
|
||||||
-.BR __ttys_file__ file.
|
|
||||||
+.BR /etc/ttys file.
|
|
||||||
This option overrides the default position determined with ttyslot(__libmansuffix__).
|
|
||||||
This option is inappropriate for use with xdm, the -x option is more useful.
|
|
||||||
.\" __END_UTMP_ONLY__
|
|
||||||
@@ -153,13 +153,13 @@
|
|
||||||
.IP "\fB-V\fP"
|
|
||||||
This option causes the command to print its version and exit.
|
|
||||||
.IP "\fB-a\fP"
|
|
||||||
-This session should be added to __utmp_manpage__/__wtmp_manpage__.
|
|
||||||
+This session should be added to utmp/wtmp.
|
|
||||||
.IP "\fB-d\fP"
|
|
||||||
-This session should be deleted from __utmp_manpage__/__wtmp_manpage__. One of -a/-d must
|
|
||||||
+This session should be deleted from utmp/wtmp. One of -a/-d must
|
|
||||||
be specified.
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
.BR xdm (__appmansuffix__),
|
|
||||||
-.BR __utmp_manpage__ (__filemansuffix__),
|
|
||||||
-.BR __wtmp_manpage__ (__filemansuffix__)
|
|
||||||
+.BR utmp (__filemansuffix__),
|
|
||||||
+.BR wtmp (__filemansuffix__)
|
|
||||||
.SH AUTHOR
|
|
||||||
Keith Packard, MIT X Consortium
|
|
Loading…
Reference in new issue