diff options
| -rw-r--r-- | serial/manager.c | 19 | 
1 files changed, 12 insertions, 7 deletions
| diff --git a/serial/manager.c b/serial/manager.c index 6ee27ccf..be8cfa5c 100644 --- a/serial/manager.c +++ b/serial/manager.c @@ -60,7 +60,6 @@  #include "manager.h"  #include "sdpd.h" -#define BASE_UUID			"00000000-0000-1000-8000-00805F9B34FB"  #define SERIAL_PROXY_INTERFACE		"org.bluez.serial.Proxy"  #define BUF_SIZE			1024 @@ -729,6 +728,7 @@ static int get_handles(struct pending_connect *pc, const char *uuid,  static int pattern2uuid128(const char *pattern, char *uuid, size_t size)  {  	uint16_t cls; +	int i;  	/* Friendly name */  	cls = str2class(pattern); @@ -742,15 +742,20 @@ static int pattern2uuid128(const char *pattern, char *uuid, size_t size)  	}  	/* UUID 128*/ -	if ((strlen(pattern) == 36) && -		(strncasecmp(BASE_UUID, pattern, 3) == 0) && -		(strncasecmp(BASE_UUID + 8, pattern + 8, 28) == 0)) { +	if (strlen(pattern) != 36) +		return -EINVAL; -		strncpy(uuid, pattern, size); -		return 0; +	for (i = 0; i < 36; i++) { +		if (i == 8 || i == 13 || i == 18 || i == 23) { +			if (pattern[i] != '-') +				return -EINVAL; + +		} else if (!g_ascii_isxdigit(pattern[i])) +			return -EINVAL;  	} -	return -EINVAL; +	strncpy(uuid, pattern, size); +	return 0;  }  static int pattern2long(const char *pattern, long *pval) | 
