> > 2. > > == Calculate the actual length of kbs, add 1, and then copy those many > > bytes to user-buffer == > > > > ret = copy_to_user(user_kdgkb->kb_string, kbs, len + 1) ? > > -EFAULT : 0; > > => > > ret = copy_to_user(user_kdgkb->kb_string, kbs, strlen(kbs) + 1) ? > > -EFAULT : 0; > > > > But isn't strlen(kbs) is guaranteed to be equal to strlcpy() return > value in this case? As I said in previous emails, > strlen(func_table[kb_func]) < sizeof(user_kdgkb->kb_string) by design of > this function. That's the whole point of the discussion :) The method "vt_do_kdgkb_ioctl" does not manage "func_table[kb_func]". Thus, the method does not know whether or not strlen(func_table[kb_func]) < sizeof(user_kdgkb->kb_string). The intention is to make the method itself robust, without relying on any external "chances" :) > > Do we need extra strlen() call here? Let's see what more experienced > people think about it :) Yep, let's wait for more feedback ..