LKM, problem with simple char from string.

From: authn
Date: Mon Aug 16 2004 - 05:33:34 EST


Hello,
I am coding a linux kernel module and have problem with some string from user
space (from execve system call). There is no problem with useing this string
as a one, for example printk(KERN_ALERT "%s", string) works fine.
Problem appears when i want to printk or compare single char, in first case it
is printked with some extra '<1>' and in second case, when i compare it with
other one, it doesnt fit to real char (it is "connected" with '<1>' in some
way ?). I tried to copy it to kmalloced buffer:

if ((k_space=(char *)kmalloc(len, GFP_KERNEL))==NULL)
return -1;
memcpy_fromfs((void *)k_space, (void *)argv[argc], len);

but then playing with k_space[i] was the same.
Short code from module:
if ((k_space=(char *)kmalloc(len, GFP_KERNEL))==NULL)
return -1;
memset(k_space, '\0', sizeof(k_space));
memcpy_fromfs((char *)k_space, (char *)argv[argc], len);
printk(KERN_ALERT"%s\n", k_space);
printk(KERN_ALERT "%c\n",k_space[i]);
And then i ll have in log file string (from first printk call) and char with
<1> (from second printk call). It doesnt let me to compare chars.
What it happens ?


Regards,
apacz
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/