diff -u -rN osh-1.7/debian/changelog osh-1.7-modified/debian/changelog --- osh-1.7/debian/changelog Sun Feb 6 13:57:01 2005 +++ osh-1.7-modified/debian/changelog Sun Feb 6 13:57:19 2005 @@ -1,3 +1,12 @@ +osh (1.7-13) unstable; urgency=high + + * urgency set to high because this version fixes a buffer overflow + that causes unauthorized privilege escalation (thanks to Charles Stevenson + <[EMAIL PROTECTED]> for the bug report) + * main.c: s/strcpy/strncpy/ and s/strcat/strncat/ to avoid a buffer overflow + + -- Oohara Yuuma <[EMAIL PROTECTED]> Sun, 6 Feb 2005 13:36:02 +0900 + osh (1.7-12) unstable; urgency=high * urgency set to high because this version fixes a buffer overflow diff -u -rN osh-1.7/main.c osh-1.7-modified/main.c --- osh-1.7/main.c Sun Feb 6 13:57:01 2005 +++ osh-1.7-modified/main.c Sun Feb 6 13:57:19 2005 @@ -305,12 +305,18 @@ if (strcmp(Table[++i].prog_name,argv[1])==0) { found=1; break; } if (found) { /* It's a command, input is a string */ inputfp=(FILE *)1; - strcpy(inputstring, argv[1]); + strncpy(inputstring, argv[1], sizeof(inputstring)); + inputstring[sizeof(inputstring) - 1] = '\0'; for (i=3;i<=argc;i++) { - strcat(inputstring, " "); - strcat(inputstring, argv[i-1]); + strncat(inputstring, " ", sizeof(inputstring) - strlen(inputstring)); + inputstring[sizeof(inputstring) - 1] = '\0'; + strncat(inputstring, argv[i-1], + sizeof(inputstring) - strlen(inputstring)); + inputstring[sizeof(inputstring) - 1] = '\0'; } - strcat(inputstring, "\n"); /* So it's a command */ + /* So it's a command */ + strncat(inputstring, "\n", sizeof(inputstring) - strlen(inputstring)); + inputstring[sizeof(inputstring) - 1] = '\0'; } else { /* It's a file, input is that file */ if (access(argv[1], R_OK)) { fprintf(stderr,"No access to shell script\n");
-- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]