library: Ensure subsession_user_t does not contain garbage 85/277985/2
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 15 Jul 2022 15:16:44 +0000 (17:16 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 15 Jul 2022 15:21:39 +0000 (17:21 +0200)
Change-Id: I06fa8c004af2873a3a2926b5bde4fc62043d8f62

libsessiond/src/lib.c

index c6a4ebf..d987711 100644 (file)
@@ -443,7 +443,12 @@ static bool signal_handler_internal(const gchar *signal_name,
 
 static inline void *subsession_user_copy(subsession_user_t dst, subsession_user_t src)
 {
-       return memcpy(dst, src, strnlen(src, sizeof(subsession_user_t)-1) + 1);
+       size_t copylen = strnlen(src, sizeof(subsession_user_t)-1) + 1;
+       size_t filllen = sizeof(subsession_user_t) - copylen;
+       assert(copylen + filllen == sizeof(subsession_user_t));
+       void *p = memcpy(dst, src, copylen);
+       memset(dst + copylen, 0, filllen);
+       return p;
 }
 
 static void signal_addremove_common_handler(GDBusConnection *connection,