You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gnome-keyring/SOURCES/gnome-keyring-42.0-fix-strn...

79 lines
3.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

From f532e3de2bd77465c976abc913e3f0a5cd09a5d2 Mon Sep 17 00:00:00 2001
From: Matt Turner <mattst88@gmail.com>
Date: Sun, 22 May 2022 13:00:46 -0400
Subject: [PATCH] pkcs11: Don't use strncpy when copying paths
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Using strncpy produces the following warning, which indicates that the
destination string could be left unterminated.
CC daemon/control/gkd-control-server.lo
CCLD libgkd-control.la
CC pkcs11/rpc-layer/libgkm_rpc_layer_la-gkm-rpc-dispatch.lo
In file included from /usr/include/string.h:519,
from /usr/include/glib-2.0/glib/galloca.h:33,
from /usr/include/glib-2.0/glib.h:30,
from ./egg/egg-error.h:24,
from pkcs11/rpc-layer/gkm-rpc-dispatch.c:31:
In function strncpy,
inlined from gkm_rpc_layer_startup at pkcs11/rpc-layer/gkm-rpc-dispatch.c:2382:2:
/usr/include/bits/string_fortified.h:95:10: warning: __builtin_strncpy specified bound 108 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
---
pkcs11/rpc-layer/gkm-rpc-dispatch.c | 4 +++-
pkcs11/rpc-layer/gkm-rpc-module.c | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/pkcs11/rpc-layer/gkm-rpc-dispatch.c b/pkcs11/rpc-layer/gkm-rpc-dispatch.c
index 72d2ced1..dbedb355 100644
--- a/pkcs11/rpc-layer/gkm-rpc-dispatch.c
+++ b/pkcs11/rpc-layer/gkm-rpc-dispatch.c
@@ -31,6 +31,8 @@
#include "egg/egg-error.h"
#include "egg/egg-unix-credentials.h"
+#include <glib.h>
+
#include <sys/types.h>
#include <sys/param.h>
#include <sys/socket.h>
@@ -2379,7 +2381,7 @@ gkm_rpc_layer_startup (const char *prefix)
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
unlink (pkcs11_socket_path);
- strncpy (addr.sun_path, pkcs11_socket_path, sizeof (addr.sun_path));
+ g_strlcpy (addr.sun_path, pkcs11_socket_path, sizeof (addr.sun_path));
if (bind (sock, (struct sockaddr*)&addr, sizeof (addr)) < 0) {
gkm_rpc_warn ("couldn't bind to pkcs11 socket: %s: %s",
pkcs11_socket_path, strerror (errno));
diff --git a/pkcs11/rpc-layer/gkm-rpc-module.c b/pkcs11/rpc-layer/gkm-rpc-module.c
index 24457ce1..515b18a4 100644
--- a/pkcs11/rpc-layer/gkm-rpc-module.c
+++ b/pkcs11/rpc-layer/gkm-rpc-module.c
@@ -29,6 +29,8 @@
#include "egg/egg-unix-credentials.h"
+#include <glib.h>
+
#include <sys/types.h>
#include <sys/param.h>
#include <sys/socket.h>
@@ -233,7 +235,7 @@ call_connect (CallState *cs)
debug (("connecting to: %s", pkcs11_socket_path));
addr.sun_family = AF_UNIX;
- strncpy (addr.sun_path, pkcs11_socket_path, sizeof (addr.sun_path));
+ g_strlcpy (addr.sun_path, pkcs11_socket_path, sizeof (addr.sun_path));
sock = socket (AF_UNIX, SOCK_STREAM, 0);
if (sock < 0) {
--
GitLab