* LKM, problem with simple char from string.
@ 2004-08-16 10:31 authn
2004-08-16 21:26 ` Randy.Dunlap
0 siblings, 1 reply; 2+ messages in thread
From: authn @ 2004-08-16 10:31 UTC (permalink / raw)
To: linux-kernel
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
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: LKM, problem with simple char from string.
2004-08-16 10:31 LKM, problem with simple char from string authn
@ 2004-08-16 21:26 ` Randy.Dunlap
0 siblings, 0 replies; 2+ messages in thread
From: Randy.Dunlap @ 2004-08-16 21:26 UTC (permalink / raw)
To: opacki; +Cc: linux-kernel
On Mon, 16 Aug 2004 12:31:51 +0200 authn wrote:
| 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));
I don't think that this is the main problem, but sizeof(k_space) here
is just the sizeof a pointer (I guess, can't see entire source code),
like 4 or 8.
| 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 ?
--
~Randy
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-08-16 21:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-08-16 10:31 LKM, problem with simple char from string authn
2004-08-16 21:26 ` Randy.Dunlap
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®