diff options
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/process.c | 16 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index d1e4995899..e001f27c9b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2007-03-29 Juanma Barranquero <[email protected]> + + * process.c (Fformat_network_address): Return nil when the + argument vector contains invalid values. + 2007-03-28 YAMAMOTO Mitsuharu <[email protected]> * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Define USE_PTHREAD. diff --git a/src/process.c b/src/process.c index 4f6d2832f8..14535eb6e1 100644 --- a/src/process.c +++ b/src/process.c @@ -1295,7 +1295,20 @@ Returns nil if format of ADDRESS is invalid. */) return Qnil; for (i = 0; i < nargs; i++) - args[i+1] = p->contents[i]; + { + EMACS_INT element = XINT (p->contents[i]); + + if (element < 0 || element > 65535) + return Qnil; + + if (nargs <= 5 /* IPv4 */ + && i < 4 /* host, not port */ + && element > 255) + return Qnil; + + args[i+1] = p->contents[i]; + } + return Fformat (nargs+1, args); } @@ -1410,7 +1423,6 @@ list_processes_1 (query_only) if (CONSP (p->status)) symbol = XCAR (p->status); - if (EQ (symbol, Qsignal)) { Lisp_Object tem; |