*** uuid.c.org	Tue Jan  1 21:31:22 2008
--- uuid.c	Sun Feb 10 19:22:20 2008
***************
*** 87,93 ****
  	int			src_len;
  
  	src_len = strlen(source);
! 	if (src_len != 32 && src_len != 36 && src_len != 38)
  		goto syntax_error;
  
  	if (src_len == 32)
--- 87,93 ----
  	int			src_len;
  
  	src_len = strlen(source);
! 	if (src_len != 32 && src_len != 35 && src_len != 36 && src_len != 38)
  		goto syntax_error;
  
  	if (src_len == 32)
***************
*** 104,118 ****
  			str++;				/* skip the first character */
  		}
  
! 		if (str[8] != '-' || str[13] != '-' ||
! 			str[18] != '-' || str[23] != '-')
! 			goto syntax_error;
  
! 		memcpy(hex_buf, str, 8);
! 		memcpy(hex_buf + 8, str + 9, 4);
! 		memcpy(hex_buf + 12, str + 14, 4);
! 		memcpy(hex_buf + 16, str + 19, 4);
! 		memcpy(hex_buf + 20, str + 24, 12);
  	}
  
  	for (i = 0; i < UUID_LEN; i++)
--- 104,132 ----
  			str++;				/* skip the first character */
  		}
  
! 		if (src_len == 35)
! 		{
! 			if (str[8] != '-' || str[13] != '-' ||
! 			str[18] != '-')
! 				goto syntax_error;
! 		
! 			memcpy(hex_buf, str, 8);
! 			memcpy(hex_buf + 8, str + 9, 4);
! 			memcpy(hex_buf + 12, str + 14, 4);
! 			memcpy(hex_buf + 16, str + 19, 16);
! 		}
! 		else
! 		{
! 			if (str[8] != '-' || str[13] != '-' ||
! 				str[18] != '-' || str[23] != '-')
! 				goto syntax_error;
  
! 			memcpy(hex_buf, str, 8);
! 			memcpy(hex_buf + 8, str + 9, 4);
! 			memcpy(hex_buf + 12, str + 14, 4);
! 			memcpy(hex_buf + 16, str + 19, 4);
! 			memcpy(hex_buf + 20, str + 24, 12);
! 		}
  	}
  
  	for (i = 0; i < UUID_LEN; i++)
