From 8264bb58d66b04ee787f18e5cb6a54f6cc75e620 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Sat, 30 Dec 2006 15:44:51 +0000 Subject: * remote-utils.c (remote_open): Check the type of specified serial port devices before opening them. * server.c (main): Kill the inferior if an error occurs during the first remote_open. --- gdb/gdbserver/remote-utils.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'gdb/gdbserver/remote-utils.c') diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c index fd5c844..80c6343 100644 --- a/gdb/gdbserver/remote-utils.c +++ b/gdb/gdbserver/remote-utils.c @@ -52,6 +52,8 @@ #if HAVE_ARPA_INET_H #include #endif +#include +#include #if USE_WIN32API #include @@ -94,13 +96,25 @@ remote_open (char *name) #if defined(F_SETFL) && defined (FASYNC) int save_fcntl_flags; #endif - - if (!strchr (name, ':')) + char *port_str; + + port_str = strchr (name, ':'); + if (port_str == NULL) { #ifdef USE_WIN32API error ("Only : is supported on this platform."); #else - remote_desc = open (name, O_RDWR); + struct stat statbuf; + + if (stat (name, &statbuf) == 0 + && (S_ISCHR (statbuf.st_mode) || S_ISFIFO (statbuf.st_mode))) + remote_desc = open (name, O_RDWR); + else + { + errno = EINVAL; + remote_desc = -1; + } + if (remote_desc < 0) perror_with_name ("Could not open remote device"); -- cgit v1.1