aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--external/miniupnpc/igd_desc_parse.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/external/miniupnpc/igd_desc_parse.c b/external/miniupnpc/igd_desc_parse.c
index 0eaf21b6a..a43966232 100644
--- a/external/miniupnpc/igd_desc_parse.c
+++ b/external/miniupnpc/igd_desc_parse.c
@@ -15,6 +15,10 @@
void IGDstartelt(void * d, const char * name, int l)
{
struct IGDdatas * datas = (struct IGDdatas *)d;
+ if (l >= MINIUPNPC_URL_MAXSIZE) {
+ printf("Attempt to exploit miniupnpc buffer overflow\n");
+ l = MINIUPNPC_URL_MAXSIZE - 1;
+ }
memcpy( datas->cureltname, name, l);
datas->cureltname[l] = '\0';
datas->level++;