pmacct/pmacct-fix-overflow.patch
Martin Hauke 98ad19dfc1 Accepting request 789664 from openSUSE:Maintenance:12192
- pmacct-fix-overflow.patch: fixed bufferoverflow in sfacctd.
- reenable _FORTIFY_SOURCE that showed that failure

OBS-URL: https://build.opensuse.org/request/show/789664
OBS-URL: https://build.opensuse.org/package/show/server:monitoring/pmacct?expand=0&rev=97
2020-03-30 08:25:07 +00:00

30 lines
1.1 KiB
Diff

Index: pmacct-1.7.4/src/sfacctd.c
===================================================================
--- pmacct-1.7.4.orig/src/sfacctd.c
+++ pmacct-1.7.4/src/sfacctd.c
@@ -2045,7 +2045,7 @@ void finalizeSample(SFSample *sample, st
int SF_find_id(struct id_table *t, struct packet_ptrs *pptrs, pm_id_t *tag, pm_id_t *tag2)
{
- struct sockaddr sa_local;
+ struct sockaddr_storage sa_local;
struct sockaddr_in *sa4 = (struct sockaddr_in *) &sa_local;
struct sockaddr_in6 *sa6 = (struct sockaddr_in6 *) &sa_local;
SFSample *sample = (SFSample *)pptrs->f_data;
@@ -2086,13 +2086,13 @@ int SF_find_id(struct id_table *t, struc
if (sample->agent_addr.type == SFLADDRESSTYPE_IP_V4) {
begin = 0;
end = t->ipv4_num;
- sa_local.sa_family = AF_INET;
+ sa_local.ss_family = AF_INET;
sa4->sin_addr.s_addr = sample->agent_addr.address.ip_v4.s_addr;
}
else if (sample->agent_addr.type == SFLADDRESSTYPE_IP_V6) {
begin = t->num-t->ipv6_num;
end = t->num;
- sa_local.sa_family = AF_INET6;
+ sa_local.ss_family = AF_INET6;
memcpy(sa6->sin6_addr.s6_addr, sample->agent_addr.address.ip_v6.s6_addr, 16);
}