xstrncpy saga
authorNelson Ferreira <nelson.ferreira@ieee.org>
Sun, 4 Mar 2012 22:12:24 +0000 (17:12 -0500)
committerNelson Ferreira <nelson.ferreira@ieee.org>
Sun, 4 Mar 2012 22:12:24 +0000 (17:12 -0500)
* src/effi.c (Fffi_load_library): use xstrncpy instead of strncpy, strncat

Signed-off-by: Nelson Ferreira <nelson.ferreira@ieee.org>
src/effi.c
src/extents.c
src/ui/redisplay.c

index 761b295..50cac5e 100644 (file)
@@ -609,10 +609,10 @@ $LD_LIBRARY_PATH environment variable or the more global ld.so.cache.
        dotpos = strrchr((char *)XSTRING_DATA(libname),'.');
        if ( dotpos == NULL || strncmp(dotpos, EXT, sizeof(EXT))) {
                ssize_t liblen = XSTRING_LENGTH(libname);
-               ssize_t soname_len = liblen + sizeof(EXT);
-               soname = xmalloc( soname_len + 1);
-               strncpy(soname, (char *)XSTRING_DATA(libname), liblen+1);
-               strncat(soname, EXT, sizeof(EXT)+1);
+               ssize_t soname_len = liblen + sizeof(EXT) + 1;
+               soname = xmalloc( soname_len);
+               xstrncpy(soname, (char *)XSTRING_DATA(libname), soname_len);
+               xstrncpy(soname+liblen, EXT, soname_len-liblen);
        }
 
        if ( soname == NULL ) {
index 58a1284..85c1212 100644 (file)
@@ -3140,12 +3140,12 @@ print_extent_1(Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
                *bp++ = '*';
        *bp++ = (extent_start_open_p(anc) ? '(' : '[');
        if (extent_detached_p(ext))
-               strncpy(bp, "detached", sizeof(buf)-1);
+               xstrncpy(bp, "detached", sizeof(buf)-6);
        else {
-               sz=snprintf(bp, sizeof(buf)-2, "%ld, %ld",
+               sz=snprintf(bp, sizeof(buf)-6, "%ld, %ld",
                            XINT(Fextent_start_position(obj)),
                            XINT(Fextent_end_position(obj)));
-               assert(sz>=0 && (size_t)sz<(sizeof(buf)-2));
+               assert(sz>=0 && (size_t)sz<(sizeof(buf)-6));
        }
        bp += strlen(bp);
        *bp++ = (extent_end_open_p(anc) ? ')' : ']');
index d6d0157..57b6317 100644 (file)
@@ -1095,7 +1095,7 @@ static prop_block_dynarr *add_bufbyte_string_runes(pos_data * data,
                                pb.type = PROP_STRING;
                                pb.data.p_string.str =
                                        xnew_atomic_array(Bufbyte, len);
-                               strncpy((char *)pb.data.p_string.str,
+                               xstrncpy((char *)pb.data.p_string.str,
                                        (char *)pos, len);
                                pb.data.p_string.len = len;