summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--dln.c4
-rw-r--r--load.c2
-rw-r--r--ruby.c3
4 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 87d1168d20..0a0217052c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Tue Dec 16 11:37:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (set_arg0): use strlcpy() instead of strncpy().
+
+ * load.c (rb_feature_p): ditto.
+
+ * dln.c (dln_load): ditto.
+
Tue Dec 16 09:14:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (block_call): block should not be given to yield.
diff --git a/dln.c b/dln.c
index 69f44a7add..bb64c52a0f 100644
--- a/dln.c
+++ b/dln.c
@@ -1433,8 +1433,8 @@ dln_load(const char *file)
if (err_stat != B_NO_ERROR) {
char real_name[MAXPATHLEN];
- strcpy(real_name, buf);
- strcat(real_name, "__Fv");
+ strlcpy(real_name, buf, MAXPATHLEN);
+ strlcat(real_name, "__Fv", MAXPATHLEN);
err_stat = get_image_symbol(img_id, real_name,
B_SYMBOL_TYPE_TEXT, (void **)&init_fct);
}
diff --git a/load.c b/load.c
index 4166d9cd26..efe130c4f6 100644
--- a/load.c
+++ b/load.c
@@ -193,7 +193,7 @@ rb_feature_p(const char *feature, const char *ext, int rb, int expanded, const c
buf = RSTRING_PTR(bufstr);
MEMCPY(buf, feature, char, len);
for (i = 0; (e = loadable_ext[i]) != 0; i++) {
- strncpy(buf + len, e, DLEXT_MAXLEN + 1);
+ strlcpy(buf + len, e, DLEXT_MAXLEN + 1);
if (st_get_key(loading_tbl, (st_data_t)buf, &data)) {
rb_str_resize(bufstr, 0);
if (fn) *fn = (const char*)data;
diff --git a/ruby.c b/ruby.c
index 6a4a9afd0c..0d4a9903b5 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1619,8 +1619,7 @@ set_arg0(VALUE val, ID id)
if (i > PST_CLEN) {
union pstun un;
char buf[PST_CLEN + 1]; /* PST_CLEN is 64 (HP-UX 11.23) */
- strncpy(buf, s, PST_CLEN);
- buf[PST_CLEN] = '\0';
+ strlcpy(buf, s, sizeof(buf));
un.pst_command = buf;
pstat(PSTAT_SETCMD, un, PST_CLEN, 0, 0);
}