forked from pool/src_vipa
Marcus Meissner
940274ecbb
- src_vipa-fix-abend-in-memcpy.patch: src_vipa: Fix abend in memcpy (bsc#1141887 bsc#1142048 bsc#1192860) OBS-URL: https://build.opensuse.org/request/show/933305 OBS-URL: https://build.opensuse.org/package/show/network:utilities/src_vipa?expand=0&rev=10
36 lines
1.2 KiB
Diff
36 lines
1.2 KiB
Diff
From dda5d7f265c382fa1cedd34b6e45e378e1b0c99a Mon Sep 17 00:00:00 2001
|
|
From: Karsten Graul <kgraul@linux.ibm.com>
|
|
Date: Wed, 17 Jul 2019 11:07:39 +0200
|
|
Subject: src_vipa: Fix abend in memcpy
|
|
References: bsc#1141887 bsc#1142048 bsc#1192860
|
|
|
|
Customer encountered an abend in memcpy().
|
|
get_src_ip_entry() calls dm_hash_val() which itself calls memcpy
|
|
to copy a sockaddr structure into local storage, but the specified
|
|
length is longer than the length of the sockaddr structure.
|
|
The fix is to use the correct length for the respective address family.
|
|
|
|
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
|
|
---
|
|
src_vipa.c | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src_vipa.c b/src_vipa.c
|
|
index 78b2825..776f9d3 100644
|
|
--- a/src_vipa.c
|
|
+++ b/src_vipa.c
|
|
@@ -706,7 +706,9 @@ unsigned int dm_hash_val(struct sockaddr_storage *s, int masklen)
|
|
{
|
|
struct sockaddr_storage var;
|
|
|
|
- memcpy(&var,s,sizeof(struct sockaddr_storage));
|
|
+ memcpy(&var,s,(s->ss_family == AF_INET)
|
|
+ ? sizeof(struct sockaddr_in)
|
|
+ : sizeof(struct sockaddr_in6));
|
|
return (s->ss_family == AF_INET)
|
|
? dm_hash_val_ip4(&(((struct sockaddr_in *)&var)->sin_addr), masklen)
|
|
: dm_hash_val_ip6(&(((struct sockaddr_in6 *)&var)->sin6_addr), masklen);
|
|
--
|
|
2.22.0.windows.1
|
|
|