memset(&ent, 0, sizeof(ent));
 
        /* Authentication name */
-       if (qword_get(&buf, buf1, PAGE_SIZE) <= 0)
+       len = qword_get(&buf, buf1, PAGE_SIZE);
+       if (len <= 0 || len >= IDMAP_NAMESZ)
                goto out;
        memcpy(ent.authname, buf1, sizeof(ent.authname));
 
        /* Name */
        error = -EINVAL;
        len = qword_get(&buf, buf1, PAGE_SIZE);
-       if (len < 0)
+       if (len < 0 || len >= IDMAP_NAMESZ)
                goto out;
        if (len == 0)
                set_bit(CACHE_NEGATIVE, &ent.h.flags);
-       else if (len >= IDMAP_NAMESZ)
-               goto out;
        else
                memcpy(ent.name, buf1, sizeof(ent.name));
        error = -ENOMEM;
                goto out;
 
        cache_put(&res->h, cd);
-
        error = 0;
 out:
        kfree(buf1);
-
        return error;
 }
 
-
 static struct ent *
 idtoname_lookup(struct cache_detail *cd, struct ent *item)
 {
        memset(&ent, 0, sizeof(ent));
 
        /* Authentication name */
-       if (qword_get(&buf, buf1, PAGE_SIZE) <= 0)
+       len = qword_get(&buf, buf1, PAGE_SIZE);
+       if (len <= 0 || len >= IDMAP_NAMESZ)
                goto out;
        memcpy(ent.authname, buf1, sizeof(ent.authname));
 
        error = 0;
 out:
        kfree(buf1);
-
        return (error);
 }