The branch, master has been updated via a45c5c607ab3c43d947dad96b46a94b81b6a9559 (commit) via 9d4d2f70cbf83919a11c194c8234de269c5d91ee (commit) from fdd282afa3e80712790c5bbac84bf4f88644692a (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit a45c5c607ab3c43d947dad96b46a94b81b6a9559 Author: todd stecher <todd.stec...@gmail.com> Date: Tue Feb 10 12:14:39 2009 -0800 S3: Add in missing full audit entries. commit 9d4d2f70cbf83919a11c194c8234de269c5d91ee Author: todd stecher <todd.stec...@gmail.com> Date: Mon Feb 9 13:25:59 2009 -0800 S3: Fixes for coverity issues. ----------------------------------------------------------------------- Summary of changes: source3/auth/pampass.c | 4 +- source3/lib/smbrun.c | 14 +++++++++--- source3/modules/vfs_full_audit.c | 40 ++++++++++++++++++++++++++++++++----- source3/utils/net_ads.c | 10 ++++++++- source3/utils/net_cache.c | 3 +- source3/utils/ntlm_auth.c | 5 ++- 6 files changed, 60 insertions(+), 16 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/auth/pampass.c b/source3/auth/pampass.c index 4312b77..4eec269 100644 --- a/source3/auth/pampass.c +++ b/source3/auth/pampass.c @@ -276,7 +276,7 @@ static int smb_pam_passchange_conv(int num_msg, fstring current_prompt; fstring current_reply; struct smb_pam_userdata *udp = (struct smb_pam_userdata *)appdata_ptr; - struct chat_struct *pw_chat= make_pw_chat(lp_passwd_chat()); + struct chat_struct *pw_chat; struct chat_struct *t; bool found; *resp = NULL; @@ -286,7 +286,7 @@ static int smb_pam_passchange_conv(int num_msg, if (num_msg <= 0) return PAM_CONV_ERR; - if (pw_chat == NULL) + if ((pw_chat = make_pw_chat(lp_passwd_chat())) == NULL) return PAM_CONV_ERR; /* diff --git a/source3/lib/smbrun.c b/source3/lib/smbrun.c index 3199071..fdccd9e 100644 --- a/source3/lib/smbrun.c +++ b/source3/lib/smbrun.c @@ -183,11 +183,17 @@ static int smbrun_internal(const char *cmd, int *outfd, bool sanitize) #endif { - const char *newcmd = sanitize ? escape_shell_string(cmd) : cmd; - if (!newcmd) { - exit(82); + char *newcmd = NULL; + if (sanitize) { + newcmd = escape_shell_string(cmd); + if (!newcmd) + exit(82); } - execl("/bin/sh","sh","-c",newcmd,NULL); + + execl("/bin/sh","sh","-c", + newcmd ? (const char *)newcmd : cmd, NULL); + + SAFE_FREE(newcmd); } /* not reached */ diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c index e7ca77f..faa91c3 100644 --- a/source3/modules/vfs_full_audit.c +++ b/source3/modules/vfs_full_audit.c @@ -90,7 +90,7 @@ static int smb_full_audit_get_shadow_copy_data(struct vfs_handle_struct *handle, static int smb_full_audit_statvfs(struct vfs_handle_struct *handle, const char *path, struct vfs_statvfs_struct *statbuf); - +static int smb_full_audit_fs_capabilities(struct vfs_handle_struct *handle); static SMB_STRUCT_DIR *smb_full_audit_opendir(vfs_handle_struct *handle, const char *fname, const char *mask, uint32 attr); static SMB_STRUCT_DIRENT *smb_full_audit_readdir(vfs_handle_struct *handle, @@ -335,11 +335,13 @@ static int smb_full_audit_aio_cancel(struct vfs_handle_struct *handle, struct fi static int smb_full_audit_aio_error(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_STRUCT_AIOCB *aiocb); static int smb_full_audit_aio_fsync(struct vfs_handle_struct *handle, struct files_struct *fsp, int op, SMB_STRUCT_AIOCB *aiocb); static int smb_full_audit_aio_suspend(struct vfs_handle_struct *handle, struct files_struct *fsp, const SMB_STRUCT_AIOCB * const aiocb[], int n, const struct timespec *ts); +static bool smb_full_audit_aio_force(struct vfs_handle_struct *handle, + struct files_struct *fsp); /* VFS operations */ static vfs_op_tuple audit_op_tuples[] = { - + /* Disk operations */ {SMB_VFS_OP(smb_full_audit_connect), SMB_VFS_OP_CONNECT, @@ -356,6 +358,8 @@ static vfs_op_tuple audit_op_tuples[] = { SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_statvfs), SMB_VFS_OP_STATVFS, SMB_VFS_LAYER_LOGGER}, + {SMB_VFS_OP(smb_full_audit_fs_capabilities), SMB_VFS_OP_FS_CAPABILITIES, + SMB_VFS_LAYER_LOGGER}, /* Directory operations */ @@ -520,7 +524,7 @@ static vfs_op_tuple audit_op_tuples[] = { SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_sys_acl_free_qualifier), SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, SMB_VFS_LAYER_LOGGER}, - + /* EA operations. */ {SMB_VFS_OP(smb_full_audit_getxattr), SMB_VFS_OP_GETXATTR, @@ -547,7 +551,7 @@ static vfs_op_tuple audit_op_tuples[] = { SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_fsetxattr), SMB_VFS_OP_FSETXATTR, SMB_VFS_LAYER_LOGGER}, - + {SMB_VFS_OP(smb_full_audit_aio_read), SMB_VFS_OP_AIO_READ, SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_aio_write), SMB_VFS_OP_AIO_WRITE, @@ -562,9 +566,11 @@ static vfs_op_tuple audit_op_tuples[] = { SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_aio_suspend),SMB_VFS_OP_AIO_SUSPEND, SMB_VFS_LAYER_LOGGER}, + {SMB_VFS_OP(smb_full_audit_aio_force),SMB_VFS_OP_AIO_FORCE, + SMB_VFS_LAYER_LOGGER}, /* Finish VFS operations definition */ - + {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP} }; @@ -682,7 +688,7 @@ static struct { { SMB_VFS_OP_IS_OFFLINE, "aio_is_offline" }, { SMB_VFS_OP_SET_OFFLINE, "aio_set_offline" }, { SMB_VFS_OP_LAST, NULL } -}; +}; static int audit_syslog_facility(vfs_handle_struct *handle) { @@ -1022,6 +1028,17 @@ static int smb_full_audit_statvfs(struct vfs_handle_struct *handle, return result; } +static int smb_full_audit_fs_capabilities(struct vfs_handle_struct *handle) +{ + int result; + + result = SMB_VFS_NEXT_FS_CAPABILITIES(handle); + + do_log(SMB_VFS_OP_FS_CAPABILITIES, true, handle, ""); + + return result; +} + static SMB_STRUCT_DIR *smb_full_audit_opendir(vfs_handle_struct *handle, const char *fname, const char *mask, uint32 attr) { @@ -2310,6 +2327,17 @@ static int smb_full_audit_aio_suspend(struct vfs_handle_struct *handle, struct f return result; } +static bool smb_full_audit_aio_force(struct vfs_handle_struct *handle, + struct files_struct *fsp) +{ + bool result; + + result = SMB_VFS_NEXT_AIO_FORCE(handle, fsp); + do_log(SMB_VFS_OP_AIO_FORCE, result, handle, + "%s", fsp->fsp_name); + + return result; +} NTSTATUS vfs_full_audit_init(void); NTSTATUS vfs_full_audit_init(void) diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c index 86fb9f6..58bbb70 100644 --- a/source3/utils/net_ads.c +++ b/source3/utils/net_ads.c @@ -123,6 +123,7 @@ static int net_ads_cldap_netlogon(struct net_context *c, ADS_STRUCT *ads) static int net_ads_lookup(struct net_context *c, int argc, const char **argv) { ADS_STRUCT *ads; + int ret; if (c->display_usage) { d_printf("Usage:\n" @@ -133,6 +134,7 @@ static int net_ads_lookup(struct net_context *c, int argc, const char **argv) if (!ADS_ERR_OK(ads_startup_nobind(c, false, &ads))) { d_fprintf(stderr, "Didn't find the cldap server!\n"); + ads_destroy(&ads); return -1; } @@ -141,7 +143,9 @@ static int net_ads_lookup(struct net_context *c, int argc, const char **argv) ads->ldap.port = 389; } - return net_ads_cldap_netlogon(c, ads); + ret = net_ads_cldap_netlogon(c, ads); + ads_destroy(&ads); + return ret; } @@ -166,6 +170,7 @@ static int net_ads_info(struct net_context *c, int argc, const char **argv) if (!ads || !ads->config.realm) { d_fprintf(stderr, "Didn't find the ldap server!\n"); + ads_destroy(&ads); return -1; } @@ -189,6 +194,7 @@ static int net_ads_info(struct net_context *c, int argc, const char **argv) d_printf("KDC server: %s\n", ads->auth.kdc_server ); d_printf("Server time offset: %d\n", ads->auth.time_offset ); + ads_destroy(&ads); return 0; } @@ -383,6 +389,7 @@ static int net_ads_workgroup(struct net_context *c, int argc, const char **argv) print_sockaddr(addr, sizeof(addr), &ads->ldap.ss); if ( !ads_cldap_netlogon_5(talloc_tos(), addr, ads->server.realm, &reply ) ) { d_fprintf(stderr, "CLDAP query failed!\n"); + ads_destroy(&ads); return -1; } @@ -1847,6 +1854,7 @@ static int net_ads_password(struct net_context *c, int argc, const char **argv) if (!ads->config.realm) { d_fprintf(stderr, "Didn't find the kerberos server!\n"); + ads_destroy(&ads); return -1; } diff --git a/source3/utils/net_cache.c b/source3/utils/net_cache.c index cabb6d5..5e7db38 100644 --- a/source3/utils/net_cache.c +++ b/source3/utils/net_cache.c @@ -216,7 +216,7 @@ static int net_cache_del(struct net_context *c, int argc, const char **argv) static int net_cache_get(struct net_context *c, int argc, const char **argv) { const char* keystr = argv[0]; - char* valuestr; + char* valuestr = NULL; time_t timeout; if (argc < 1 || c->display_usage) { @@ -226,6 +226,7 @@ static int net_cache_get(struct net_context *c, int argc, const char **argv) if (gencache_get(keystr, &valuestr, &timeout)) { print_cache_entry(keystr, valuestr, timeout, NULL); + SAFE_FREE(valuestr); return 0; } diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c index 8aa8e5e..b94efc9 100644 --- a/source3/utils/ntlm_auth.c +++ b/source3/utils/ntlm_auth.c @@ -526,7 +526,7 @@ static NTSTATUS winbind_pw_check(struct ntlmssp_state *ntlmssp_state, DATA_BLOB char *error_string; uint8 lm_key[8]; uint8 user_sess_key[16]; - char *unix_name; + char *unix_name = NULL; nt_status = contact_winbind_auth_crap(ntlmssp_state->user, ntlmssp_state->domain, ntlmssp_state->workstation, @@ -549,7 +549,6 @@ static NTSTATUS winbind_pw_check(struct ntlmssp_state *ntlmssp_state, DATA_BLOB } ntlmssp_state->auth_context = talloc_strdup(ntlmssp_state, unix_name); - SAFE_FREE(unix_name); } else { DEBUG(NT_STATUS_EQUAL(nt_status, NT_STATUS_ACCESS_DENIED) ? 0 : 3, ("Login for user [%s]\\[...@[%s] failed due to [%s]\n", @@ -558,6 +557,8 @@ static NTSTATUS winbind_pw_check(struct ntlmssp_state *ntlmssp_state, DATA_BLOB error_string ? error_string : "unknown error (NULL)")); ntlmssp_state->auth_context = NULL; } + + SAFE_FREE(unix_name); return nt_status; } -- Samba Shared Repository