Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37478602
en ru br
Репозитории ALT
S:265-alt5
5.1: 264-alt1
4.1: 259-alt1
4.0: 259-alt1
3.0: 227-alt1
www.altlinux.org/Changes

Группа :: Система/Основа
Пакет: nss_ldap

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: nss_ldap-210-explode_rdn-alt.patch
Скачать


--- nss_ldap-210/util.c.original	2003-07-21 15:02:54 +0300
+++ nss_ldap-210/util.c	2003-09-04 19:53:42 +0300
@@ -367,6 +367,7 @@
 	      if (strncasecmp (*p, rdnava, rdnavalen) == 0)
 		{
 		  char *r = *p + rdnavalen;
+		  int i,j;
 
 		  rdnlen = strlen (r);
 		  if (*buflen <= rdnlen)
@@ -376,7 +377,32 @@
 		      return NSS_TRYAGAIN;
 		    }
 		  rdnvalue = *buffer;
-		  strncpy (rdnvalue, r, rdnlen);
+		  i = 0; j = 0;
+		  while (i < rdnlen) {
+		  	if (*(r+i) == '\\') {
+				unsigned char ch1 = *(r+i+1);
+				int code1 = (((ch1 >= '0') && (ch1 <= '9')) ? ch1-'0' : -1) +
+					    (((ch1 >= 'A') && (ch1 <= 'F')) ? ch1-'A'+10 : -1) +
+					    (((ch1 >= 'a') && (ch1 <= 'f')) ? ch1-'a'+10 : -1) + 3;
+				if (code1 != 0) {
+				    	unsigned char ch2 = *(r+i+2);
+					int code2 = (((ch2 >= '0') && (ch2 <= '9')) ? ch2-'0' : -1) +
+						    (((ch2 >= 'A') && (ch2 <= 'F')) ? ch2-'A'+10 : -1) +
+						    (((ch2 >= 'a') && (ch2 <= 'f')) ? ch2-'a'+10 : -1) + 3;
+					if (code2 != 0) {
+					    *(rdnvalue+j) = ((code1-1) << 4)+(code2-1);
+					    i += 3; j++;
+					    continue;
+				    	}
+				}
+				*(rdnvalue+j) = ch1;
+				i+=2; j++;
+				continue;
+		  	}
+			*(rdnvalue+j) = *(r+i);
+			i++; j++;
+		  }
+		  rdnlen = j;
 		  break;
 		}
 	    }
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin