staging: tidspbridge/pmgr: additional checking after return from strlen_user
authorChen Gang <gang.chen@asianux.com>
Mon, 21 Jan 2013 09:33:26 +0000 (17:33 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 Jan 2013 22:00:10 +0000 (14:00 -0800)
  strlen_user will return the length including final NUL.
    and will return 0 if failed (for example: if user string not NUL terminated)

  so need check whether it is an invalid parameter.

addtional info:
  can reference the comments of strlen_user in lib/strnlen_user.c

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Cc: Omar Ramirez Luna <omar.ramirez@copitl.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/tidspbridge/pmgr/dspapi.c

index 9ef1ad9527afe4c32a7f5653b9d62dde944c9853..5a18a9417ac27081a38948006fe6c179a1750dbf 100644 (file)
@@ -414,10 +414,13 @@ u32 mgrwrap_register_object(union trapped_args *args, void *pr_ctxt)
        CP_FM_USR(&uuid_obj, args->args_mgr_registerobject.uuid_obj, status, 1);
        if (status)
                goto func_end;
-       /* path_size is increased by 1 to accommodate NULL */
        path_size = strlen_user((char *)
-                               args->args_mgr_registerobject.sz_path_name) +
-           1;
+                               args->args_mgr_registerobject.sz_path_name);
+       if (!path_size) {
+               status = -EINVAL;
+               goto func_end;
+       }
+
        psz_path_name = kmalloc(path_size, GFP_KERNEL);
        if (!psz_path_name) {
                status = -ENOMEM;