* Heres how it works: Key_no is the index of the key/value pair to 
  * return in keybuf/value.
  * Bufsize is the size of keybuf (BEFS_NAME_LEN+1 is a good size). Keysize is 
- * the number of charecters in the key (just a convenience).
+ * the number of characters in the key (just a convenience).
  *
  * Algorithm:
  *   Get the first leafnode of the tree. See if the requested key is in that
                           "for key of size %d", __func__, bufsize, keylen);
                brelse(this_node->bh);
                goto error_alloc;
-       };
+       }
 
-       strncpy(keybuf, keystart, keylen);
+       strlcpy(keybuf, keystart, keylen + 1);
        *value = fs64_to_cpu(sb, valarray[cur_key]);
        *keysize = keylen;
-       keybuf[keylen] = '\0';
 
        befs_debug(sb, "Read [%llu,%d]: Key \"%.*s\", Value %llu", node_off,
                   cur_key, keylen, keybuf, *value);