[前][次][番号順一覧][スレッド一覧]

ruby-changes:10219

From: nobu <ko1@a...>
Date: Sun, 25 Jan 2009 09:08:21 +0900 (JST)
Subject: [ruby-changes:10219] Ruby:r21763 (trunk): * dir.c (join_path): use strlcat() to force link.

nobu	2009-01-25 09:08:06 +0900 (Sun, 25 Jan 2009)

  New Revision: 21763

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21763

  Log:
    * dir.c (join_path): use strlcat() to force link.
    * dir.c (glob_helper): no strcpy() is needed since len is known.

  Modified files:
    trunk/ChangeLog
    trunk/dir.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 21762)
+++ ChangeLog	(revision 21763)
@@ -1,3 +1,9 @@
+Sun Jan 25 09:09:29 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* dir.c (join_path): use strlcat() to force link.
+
+	* dir.c (glob_helper): no strcpy() is needed since len is known.
+
 Sun Jan 25 06:44:58 2009  Technorama Ltd.  <oss-ruby@t...>
 
 	* ext/openssl/ossl_ssl.c: Server Name Indication support.
Index: dir.c
===================================================================
--- dir.c	(revision 21762)
+++ dir.c	(revision 21763)
@@ -1112,15 +1112,16 @@
 join_path(const char *path, int dirsep, const char *name)
 {
     long len = strlen(path);
-    char *buf = GLOB_ALLOC_N(char, len+strlen(name)+(dirsep?1:0)+1);
+    long len2 = strlen(name)+(dirsep?1:0)+1;
+    char *buf = GLOB_ALLOC_N(char, len+len2);
 
     if (!buf) return 0;
     memcpy(buf, path, len);
     if (dirsep) {
-	strcpy(buf+len, "/");
-	len++;
+	buf[len++] = '/';
     }
-    strcpy(buf+len, name);
+    buf[len] = '\0';
+    strlcat(buf+len, name, len2);
     return buf;
 }
 
@@ -1301,12 +1302,13 @@
 	    if (*cur) {
 		char *buf;
 		char *name;
-		name = GLOB_ALLOC_N(char, strlen((*cur)->str) + 1);
+		size_t len = strlen((*cur)->str) + 1;
+		name = GLOB_ALLOC_N(char, len);
 		if (!name) {
 		    status = -1;
 		    break;
 		}
-		strcpy(name, (*cur)->str);
+		memcpy(name, (*cur)->str, len);
 		if (escape) remove_backslashes(name, enc);
 
 		new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]