summaryrefslogtreecommitdiff
path: root/plugins/mms
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <waker@users.sourceforge.net>2014-05-11 18:50:46 +0200
committerGravatar Alexey Yakovenko <waker@users.sourceforge.net>2014-05-11 18:50:46 +0200
commitd95b3f2e278f5c3743501fa18458e2e46c263c39 (patch)
tree1ef7706ca3ae12db92f86fd00deec8fc44d3102b /plugins/mms
parent7acc533a95ced8d6f8fa6ef85035806e64ad089a (diff)
mms: fixed buffer overflow bug
Diffstat (limited to 'plugins/mms')
-rw-r--r--plugins/mms/libmms/mms.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/plugins/mms/libmms/mms.c b/plugins/mms/libmms/mms.c
index 3aef102d..b23130fe 100644
--- a/plugins/mms/libmms/mms.c
+++ b/plugins/mms/libmms/mms.c
@@ -275,7 +275,11 @@ static int fallback_io_tcp_connect(void *data, const char *host, int port, int *
for (rp = res; rp != NULL; rp = rp->ai_next) {
struct sockaddr_in sin;
memset (&sin, 0, sizeof (sin));
- memcpy (&sin, rp->ai_addr, rp->ai_addrlen);
+ int l = rp->ai_addrlen;
+ if (l > sizeof (sin)) {
+ l = sizeof (sin);
+ }
+ memcpy (&sin, rp->ai_addr, l);
#endif
time_t t = time (NULL);