RE: binfmt_script and ^M

Heusden, Folkert van
2001-02-27T13:34:38Z

> When running a script (perl in this case) that has DOS-style newlines
> (\r\n), Linux 2.4.2 can't find an interpreter because it doesn't
> recognize the \r. The following patch should fix this (untested).

_should_ it work with the \r in it?

There might be a problem with your patch: at the '*)': if the '\n' is the
first character on the line, the cp-1 (which should be *(cp-1) I think)
would point before the buffer which can be un-allocated memory.

--- binfmt_script.c~ Mon Feb 26 17:42:09 2001
+++ binfmt_script.c Tue Feb 27 13:39:47 2001
@@ -36,6 +36,8 @@
bprm->buf[BINPRM_BUF_SIZE - 1] = '\0';
if ((cp = strchr(bprm->buf, '\n')) == NULL)
cp = bprm->buf+BINPRM_BUF_SIZE-1;
+ if (cp - 1 == '\r') <------- *)
+ cp--;
*cp = '\0';
while (cp > bprm->buf) {
cp--;

Greetings,
Folkert van Heusden
[ www.vanheusden.com ]