Просмотр исходного кода

* utilvfs.c (is_localized_month): Check "month" for NULL and
forbid punctuation characters in localized month abbreviation.

Andrew V. Samoilov 20 лет назад
Родитель
Сommit
c6a4eae10c
2 измененных файлов с 12 добавлено и 3 удалено
  1. 5 0
      vfs/ChangeLog
  2. 7 3
      vfs/utilvfs.c

+ 5 - 0
vfs/ChangeLog

@@ -1,3 +1,8 @@
+2005-04-21  Andrew V. Samoilov  <sav@bcs.zp.ua>
+
+	* utilvfs.c (is_localized_month): Check "month" for NULL and
+	forbid punctuation characters in localized month abbreviation.
+
 2005-04-13  Roland Illig  <roland.illig@gmx.de>
 
 	* vfs.h: Fixed prototypes for mc_read() and mc_write(). Now they

+ 7 - 3
vfs/utilvfs.c

@@ -336,17 +336,21 @@ is_month (const char *str, struct tm *tim)
 
 /*
  * Check for possible locale's abbreviated month name (Jan..Dec).
- * Any 3 bytes long string without digit and control characters.
+ * Any 3 bytes long string without digit, control and punctuation characters.
  * isalpha() is locale specific, so it cannot be used if current
  * locale is "C" and ftp server use Cyrillic.
- * TODO: Punctuation characters also cannot be part of month name.
  * NB: It is assumed there are no whitespaces in month.
  */
 static int
 is_localized_month (const unsigned char *month)
 {
     int i = 0;
-    while ((i < 3) && *month && !isdigit (*month) && !iscntrl (*month)) {
+
+    if (!month)
+	return 0;
+
+    while ((i < 3) && *month && !isdigit (*month) && !iscntrl (*month)
+	   && !ispunct (*month)) {
 	i++;
 	month++;
     }