|  | @@ -1733,24 +1733,30 @@ tor_inet_pton(int af, const char *src, void *dst)
 | 
	
		
			
				|  |  |          return 0;
 | 
	
		
			
				|  |  |        if (TOR_ISXDIGIT(*src)) {
 | 
	
		
			
				|  |  |          char *next;
 | 
	
		
			
				|  |  | +        int len;
 | 
	
		
			
				|  |  |          long r = strtol(src, &next, 16);
 | 
	
		
			
				|  |  | -        if (next > 4+src)
 | 
	
		
			
				|  |  | -          return 0;
 | 
	
		
			
				|  |  | -        if (next == src)
 | 
	
		
			
				|  |  | -          return 0;
 | 
	
		
			
				|  |  | -        if (r<0 || r>65536)
 | 
	
		
			
				|  |  | +        tor_assert(next != NULL);
 | 
	
		
			
				|  |  | +        tor_assert(next != src);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        len = *next == '\0' ? eow - src : next - src;
 | 
	
		
			
				|  |  | +        if (len > 4)
 | 
	
		
			
				|  |  |            return 0;
 | 
	
		
			
				|  |  | +        if (len > 1 && !TOR_ISXDIGIT(src[1]))
 | 
	
		
			
				|  |  | +          return 0; /* 0x is not valid */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        tor_assert(r >= 0);
 | 
	
		
			
				|  |  | +        tor_assert(r < 65536);
 | 
	
		
			
				|  |  |          words[i++] = (uint16_t)r;
 | 
	
		
			
				|  |  |          setWords++;
 | 
	
		
			
				|  |  |          src = next;
 | 
	
		
			
				|  |  |          if (*src != ':' && src != eow)
 | 
	
		
			
				|  |  |            return 0;
 | 
	
		
			
				|  |  |          ++src;
 | 
	
		
			
				|  |  | -      } else if (*src == ':' && i > 0 && gapPos==-1) {
 | 
	
		
			
				|  |  | +      } else if (*src == ':' && i > 0 && gapPos == -1) {
 | 
	
		
			
				|  |  |          gapPos = i;
 | 
	
		
			
				|  |  |          ++src;
 | 
	
		
			
				|  |  | -      } else if (*src == ':' && i == 0 && src[1] == ':' && gapPos==-1) {
 | 
	
		
			
				|  |  | +      } else if (*src == ':' && i == 0 && src+1 < eow && src[1] == ':' &&
 | 
	
		
			
				|  |  | +                 gapPos == -1) {
 | 
	
		
			
				|  |  |          gapPos = i;
 | 
	
		
			
				|  |  |          src += 2;
 | 
	
		
			
				|  |  |        } else {
 |