The branch, v3-5-test has been updated via c0282f8... Fix bug 6546: Avoid accessing buf[-1] if NUL byte comes from fgets from f9651fc... Revert "s3: Fix commit 9b5f8eb59ed7f65d4c017cd6a9dc668ebf3115b6."
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test - Log ----------------------------------------------------------------- commit c0282f8f7d40b893610fdc235cb130f1fedbeb13 Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 30 21:48:33 2009 +0100 Fix bug 6546: Avoid accessing buf[-1] if NUL byte comes from fgets ----------------------------------------------------------------------- Summary of changes: source3/utils/eventlogadm.c | 5 ++++- source3/utils/net_rpc.c | 3 ++- source3/utils/smbget.c | 4 +++- source4/torture/nbench/nbench.c | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/utils/eventlogadm.c b/source3/utils/eventlogadm.c index 7fc04b0..415330f 100644 --- a/source3/utils/eventlogadm.c +++ b/source3/utils/eventlogadm.c @@ -118,7 +118,10 @@ static int DoWriteCommand( int argc, char **argv, bool debugflag, char *exename if (fgets( linein, sizeof( linein ) - 1, f1 ) == NULL) { break; } - linein[strlen( linein ) - 1] = 0; /* whack the line delimiter */ + if ((strlen(linein) > 0) + && (linein[strlen(linein)-1] == '\n')) { + linein[strlen(linein)-1] = 0; + } if ( debugflag ) printf( "Read line [%s]\n", linein ); diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c index fdb11f3..5b3b1e3 100644 --- a/source3/utils/net_rpc.c +++ b/source3/utils/net_rpc.c @@ -4262,8 +4262,9 @@ static bool get_user_tokens_from_file(FILE *f, return true; } - if (line[strlen(line)-1] == '\n') + if ((strlen(line) > 0) && (line[strlen(line)-1] == '\n')) { line[strlen(line)-1] = '\0'; + } if (line[0] == ' ') { /* We have a SID */ diff --git a/source3/utils/smbget.c b/source3/utils/smbget.c index b7d56cd..15fe1fd 100644 --- a/source3/utils/smbget.c +++ b/source3/utils/smbget.c @@ -94,7 +94,9 @@ static void get_auth_data(const char *srv, const char *shr, char *wg, int wglen, if (fgets(tmp, sizeof(tmp), stdin) == NULL) { return; } - if(tmp[strlen(tmp)-1] == '\n')tmp[strlen(tmp)-1] = '\0'; + if ((strlen(tmp) > 0) && (tmp[strlen(tmp)-1] == '\n')) { + tmp[strlen(tmp)-1] = '\0'; + } strncpy(un, tmp, unlen-1); } else if(username) strncpy(un, username, unlen-1); diff --git a/source4/torture/nbench/nbench.c b/source4/torture/nbench/nbench.c index 5a4037f..05c889d 100644 --- a/source4/torture/nbench/nbench.c +++ b/source4/torture/nbench/nbench.c @@ -95,7 +95,9 @@ again: nbench_line_count++; - line[strlen(line)-1] = 0; + if ((strlen(line) > 0) && line[strlen(line)-1] == '\n') { + line[strlen(line)-1] = 0; + } all_string_sub(line,"client1", cname, sizeof(line)); -- Samba Shared Repository