(gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004c8d85 in reply_unlink at smbd/reply.c:2590 breakpoint already hit 1 time (gdb) cont Continuing. Breakpoint 1, reply_unlink (req=0x802974520) at smbd/reply.c:2590 2590 connection_struct *conn = req->conn; (gdb) list 2585 Reply to a unlink 2586 ****************************************************************************/ 2587 2588 void reply_unlink(struct smb_request *req) 2589 { 2590 connection_struct *conn = req->conn; 2591 char *name = NULL; 2592 uint32 dirtype; 2593 NTSTATUS status; 2594 bool path_contains_wcard = False; (gdb) print *req $96 = {flags2 = 51203, smbpid = 7236, mid = 5708, vuid = 100, tid = 1, wct = 1 '\001', inbuf = 0x802974480 "", outbuf = 0x0, unread_bytes = 0, encrypted = false, conn = 0x802927050} (gdb) print req->inubf There is no member named inubf. (gdb) print req->inbuf $97 = (const unsigned char *) 0x802974480 "" (gdb) print *(req->inbuf) $98 = 0 '\0' (gdb) n 2591 char *name = NULL; (gdb) n 2594 bool path_contains_wcard = False; (gdb) n 2595 TALLOC_CTX *ctx = talloc_tos(); (gdb) n 2597 START_PROFILE(SMBunlink); (gdb) n 2599 if (req->wct < 1) { (gdb) n 2605 dirtype = SVAL(req->inbuf,smb_vwv0); (gdb) n 2607 srvstr_get_path_wcard(ctx, (char *)req->inbuf, req->flags2, &name, (gdb) n 2610 if (!NT_STATUS_IS_OK(status)) { (gdb) n 2616 status = resolve_dfspath_wcard(ctx, conn, (gdb) list 2611 reply_nterror(req, status); 2612 END_PROFILE(SMBunlink); 2613 return; 2614 } 2615 2616 status = resolve_dfspath_wcard(ctx, conn, 2617 req->flags2 & FLAGS2_DFS_PATHNAMES, 2618 name, 2619 &name, 2620 &path_contains_wcard); (gdb) n 2621 if (!NT_STATUS_IS_OK(status)) { (gdb) n 2633 DEBUG(3,("reply_unlink : %s\n",name)); (gdb) list 2628 reply_nterror(req, status); 2629 END_PROFILE(SMBunlink); 2630 return; 2631 } 2632 2633 DEBUG(3,("reply_unlink : %s\n",name)); 2634 2635 status = unlink_internals(conn, req, dirtype, name, 2636 path_contains_wcard); 2637 if (!NT_STATUS_IS_OK(status)) { (gdb) n 2635 status = unlink_internals(conn, req, dirtype, name, (gdb) s unlink_internals (conn=0x802927050, req=0x802974520, dirtype=22, name_in=0x802974660 "torture.lck", has_wild=false) at smbd/reply.c:2430 2430 const char *directory = NULL; (gdb) list 2425 ****************************************************************************/ 2426 2427 NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req, 2428 uint32 dirtype, const char *name_in, bool has_wild) 2429 { 2430 const char *directory = NULL; 2431 char *mask = NULL; 2432 char *name = NULL; 2433 char *p = NULL; 2434 int count=0; (gdb) print conn $99 = (connection_struct *) 0x802927050 (gdb) print *conn $100 = {next = 0x0, prev = 0x0, cnum = 1, params = 0x8029023f0, force_user = false, vuid_cache = {next_entry = 1, array = {{ server_info = 0x80298b350, vuid = 100, read_only = false, admin_user = false}, {server_info = 0x0, vuid = 0, read_only = false, admin_user = false} }}, dirptr = 0x0, printer = false, ipc = false, read_only = false, admin_user = false, dirpath = 0xb964fb "", connectpath = 0x80290b2e0 "/var/samba/exports/smbtorture/meddy/smbtorture", origpath = 0x80290b310 "/var/samba/exports/smbtorture/meddy/smbtorture", vfs = {ops = {connect_fn = 0x802a211b0 , disconnect = 0x802a21620 , disk_free = 0x547880 , get_quota = 0x5478e0 , set_quota = 0x547910 , get_shadow_copy_data = 0x547940 , statvfs = 0x547970 , fs_capabilities = 0x5479a0 , opendir = 0x5479b0 , readdir = 0x547ae0 , seekdir = 0x547bb0 , telldir = 0x547c80 , rewind_dir = 0x547d50 , mkdir = 0x547e10 , rmdir = 0x547fb0 , closedir = 0x548080 , open = 0x548150 , close_fn = 0x548230 , vfs_read = 0x548300 , pread = 0x548410 , write = 0x548570 , ---Type to continue, or q to quit--- pwrite = 0x548680 , lseek = 0x5487d0 , sendfile = 0x5488f0 , recvfile = 0x548a10 , rename = 0x548d30 , fsync = 0x548e20 , stat = 0x548ef0 , fstat = 0x548fc0 , lstat = 0x549090 , unlink = 0x549160 , chmod = 0x549230 , fchmod = 0x5493a0 , chown = 0x549510 , fchown = 0x5495e0 , lchown = 0x5496c0 , chdir = 0x549790 , getwd = 0x549860 , ntimes = 0x549930 , ftruncate = 0x549d90 , lock = 0x54a110 , kernel_flock = 0x54a200 , linux_setlease = 0x54a3e0 , getlock = 0x54a2e0 , symlink = 0x54a4b0 , vfs_readlink = 0x54a580 , link = 0x54a660 , mknod = 0x54a730 , realpath = 0x54a810 , notify_watch = 0x54a8f0 , chflags = 0x54a920 , file_id_create = 0x802a21730 , streaminfo = 0x54a990 , get_real_filename = 0x54abc0 , fget_nt_acl = 0x54ac10 , get_nt_acl = 0x54acf0 , ---Type to continue, or q to quit--- fset_nt_acl = 0x54add0 , chmod_acl = 0x54aeb0 , fchmod_acl = 0x54af90 , sys_acl_get_entry = 0x54b060 , sys_acl_get_tag_type = 0x54b090 , sys_acl_get_permset = 0x54b0c0 , sys_acl_get_qualifier = 0x54b0f0 , sys_acl_get_file = 0x54b110 , sys_acl_get_fd = 0x54b140 , sys_acl_clear_perms = 0x54b160 , sys_acl_add_perm = 0x54b180 , sys_acl_to_text = 0x54b1b0 , sys_acl_init = 0x54b1e0 , sys_acl_create_entry = 0x54b200 , sys_acl_set_tag_type = 0x54b230 , sys_acl_set_qualifier = 0x54b260 , sys_acl_set_permset = 0x54b290 , sys_acl_valid = 0x54b2c0 , sys_acl_set_file = 0x54b2e0 , sys_acl_set_fd = 0x54b310 , sys_acl_delete_def_file = 0x54b340 , sys_acl_get_perm = 0x54b360 , sys_acl_free_text = 0x54b390 , sys_acl_free_acl = 0x54b3b0 , sys_acl_free_qualifier = 0x54b3d0 , getxattr = 0x54b400 , ---Type to continue, or q to quit--- lgetxattr = 0x54b440 , fgetxattr = 0x54b480 , listxattr = 0x54b4c0 , llistxattr = 0x54b4f0 , flistxattr = 0x54b520 , removexattr = 0x54b560 , lremovexattr = 0x54b590 , fremovexattr = 0x54b5c0 , setxattr = 0x54b5f0 , lsetxattr = 0x54b630 , fsetxattr = 0x54b670 , aio_read = 0x54b6c0 , aio_write = 0x54b6e0 , aio_return_fn = 0x54b700 , aio_cancel = 0x54b720 , aio_error_fn = 0x54b750 , aio_fsync = 0x54b770 , aio_suspend = 0x54b7a0 , aio_force = 0x54b7d0 , is_offline = 0x54b7f0 , set_offline = 0x54b8d0 }, handles = { connect_hnd = 0x802939850, disconnect = 0x802939850, disk_free = 0x802939050, get_quota = 0x802939050, set_quota = 0x802939050, get_shadow_copy_data = 0x802939050, statvfs = 0x802939050, fs_capabilities = 0x802939050, opendir = 0x802939050, readdir = 0x802939050, seekdir = 0x802939050, ---Type to continue, or q to quit--- telldir = 0x802939050, rewind_dir = 0x802939050, mkdir = 0x802939050, rmdir = 0x802939050, closedir = 0x802939050, open = 0x802939050, close_hnd = 0x802939050, vfs_read = 0x802939050, pread = 0x802939050, write = 0x802939050, pwrite = 0x802939050, lseek = 0x802939050, sendfile = 0x802939050, recvfile = 0x802939050, rename = 0x802939050, fsync = 0x802939050, stat = 0x802939050, fstat = 0x802939050, lstat = 0x802939050, unlink = 0x802939050, chmod = 0x802939050, fchmod = 0x802939050, chown = 0x802939050, fchown = 0x802939050, lchown = 0x802939050, chdir = 0x802939050, getwd = 0x802939050, ntimes = 0x802939050, ftruncate = 0x802939050, lock = 0x802939050, kernel_flock = 0x802939050, linux_setlease = 0x802939050, getlock = 0x802939050, symlink = 0x802939050, vfs_readlink = 0x802939050, link = 0x802939050, mknod = 0x802939050, realpath = 0x802939050, notify_watch = 0x802939050, chflags = 0x802939050, file_id_create = 0x802939850, streaminfo = 0x802939050, get_real_filename = 0x802939050, fget_nt_acl = 0x802939050, get_nt_acl = 0x802939050, fset_nt_acl = 0x802939050, chmod_acl = 0x802939050, fchmod_acl = 0x802939050, sys_acl_get_entry = 0x802939050, sys_acl_get_tag_type = 0x802939050, sys_acl_get_permset = 0x802939050, sys_acl_get_qualifier = 0x802939050, sys_acl_get_file = 0x802939050, sys_acl_get_fd = 0x802939050, sys_acl_clear_perms = 0x802939050, sys_acl_add_perm = 0x802939050, sys_acl_to_text = 0x802939050, sys_acl_init = 0x802939050, sys_acl_create_entry = 0x802939050, sys_acl_set_tag_type = 0x802939050, sys_acl_set_qualifier = 0x802939050, sys_acl_set_permset = 0x802939050, sys_acl_valid = 0x802939050, ---Type to continue, or q to quit--- sys_acl_set_file = 0x802939050, sys_acl_set_fd = 0x802939050, sys_acl_delete_def_file = 0x802939050, sys_acl_get_perm = 0x802939050, sys_acl_free_text = 0x802939050, sys_acl_free_acl = 0x802939050, sys_acl_free_qualifier = 0x802939050, getxattr = 0x802939050, lgetxattr = 0x802939050, fgetxattr = 0x802939050, listxattr = 0x802939050, llistxattr = 0x802939050, flistxattr = 0x802939050, removexattr = 0x802939050, lremovexattr = 0x802939050, fremovexattr = 0x802939050, setxattr = 0x802939050, lsetxattr = 0x802939050, fsetxattr = 0x802939050, aio_read = 0x802939050, aio_write = 0x802939050, aio_return = 0x802939050, aio_cancel = 0x802939050, aio_error = 0x802939050, aio_fsync = 0x802939050, aio_suspend = 0x802939050, aio_force = 0x802939050, is_offline = 0x802939050, set_offline = 0x802939050}}, vfs_opaque = {ops = { connect_fn = 0x547850 , disconnect = 0x547870 , disk_free = 0x547880 , get_quota = 0x5478e0 , set_quota = 0x547910 , get_shadow_copy_data = 0x547940 , statvfs = 0x547970 , fs_capabilities = 0x5479a0 , opendir = 0x5479b0 , readdir = 0x547ae0 , seekdir = 0x547bb0 , ---Type to continue, or q to quit--- telldir = 0x547c80 , rewind_dir = 0x547d50 , mkdir = 0x547e10 , rmdir = 0x547fb0 , closedir = 0x548080 , open = 0x548150 , close_fn = 0x548230 , vfs_read = 0x548300 , pread = 0x548410 , write = 0x548570 , pwrite = 0x548680 , lseek = 0x5487d0 , sendfile = 0x5488f0 , recvfile = 0x548a10 , rename = 0x548d30 , fsync = 0x548e20 , stat = 0x548ef0 , fstat = 0x548fc0 , lstat = 0x549090 , unlink = 0x549160 , chmod = 0x549230 , fchmod = 0x5493a0 , chown = 0x549510 , fchown = 0x5495e0 , lchown = 0x5496c0 , chdir = 0x549790 , getwd = 0x549860 , ntimes = 0x549930 , ftruncate = 0x549d90 , lock = 0x54a110 , kernel_flock = 0x54a200 , linux_setlease = 0x54a3e0 , getlock = 0x54a2e0 , symlink = 0x54a4b0 , vfs_readlink = 0x54a580 , link = 0x54a660 , mknod = 0x54a730 , realpath = 0x54a810 , notify_watch = 0x54a8f0 , ---Type to continue, or q to quit--- chflags = 0x54a920 , file_id_create = 0x802a21730 , streaminfo = 0x54a990 , get_real_filename = 0x54abc0 , fget_nt_acl = 0x54ac10 , get_nt_acl = 0x54acf0 , fset_nt_acl = 0x54add0 , chmod_acl = 0x54aeb0 , fchmod_acl = 0x54af90 , sys_acl_get_entry = 0x54b060 , sys_acl_get_tag_type = 0x54b090 , sys_acl_get_permset = 0x54b0c0 , sys_acl_get_qualifier = 0x54b0f0 , sys_acl_get_file = 0x54b110 , sys_acl_get_fd = 0x54b140 , sys_acl_clear_perms = 0x54b160 , sys_acl_add_perm = 0x54b180 , sys_acl_to_text = 0x54b1b0 , sys_acl_init = 0x54b1e0 , sys_acl_create_entry = 0x54b200 , sys_acl_set_tag_type = 0x54b230 , sys_acl_set_qualifier = 0x54b260 , sys_acl_set_permset = 0x54b290 , sys_acl_valid = 0x54b2c0 , sys_acl_set_file = 0x54b2e0 , sys_acl_set_fd = 0x54b310 , ---Type to continue, or q to quit--- sys_acl_delete_def_file = 0x54b340 , sys_acl_get_perm = 0x54b360 , sys_acl_free_text = 0x54b390 , sys_acl_free_acl = 0x54b3b0 , sys_acl_free_qualifier = 0x54b3d0 , getxattr = 0x54b400 , lgetxattr = 0x54b440 , fgetxattr = 0x54b480 , listxattr = 0x54b4c0 , llistxattr = 0x54b4f0 , flistxattr = 0x54b520 , removexattr = 0x54b560 , lremovexattr = 0x54b590 , fremovexattr = 0x54b5c0 , setxattr = 0x54b5f0 , lsetxattr = 0x54b630 , fsetxattr = 0x54b670 , aio_read = 0x54b6c0 , aio_write = 0x54b6e0 , aio_return_fn = 0x54b700 , aio_cancel = 0x54b720 , aio_error_fn = 0x54b750 , aio_fsync = 0x54b770 , aio_suspend = 0x54b7a0 , aio_force = 0x54b7d0 , is_offline = 0x54b7f0 , ---Type to continue, or q to quit--- set_offline = 0x54b8d0 }, handles = { connect_hnd = 0x802939050, disconnect = 0x802939050, disk_free = 0x802939050, get_quota = 0x802939050, set_quota = 0x802939050, get_shadow_copy_data = 0x802939050, statvfs = 0x802939050, fs_capabilities = 0x802939050, opendir = 0x802939050, readdir = 0x802939050, seekdir = 0x802939050, telldir = 0x802939050, rewind_dir = 0x802939050, mkdir = 0x802939050, rmdir = 0x802939050, closedir = 0x802939050, open = 0x802939050, close_hnd = 0x802939050, vfs_read = 0x802939050, pread = 0x802939050, write = 0x802939050, pwrite = 0x802939050, lseek = 0x802939050, sendfile = 0x802939050, recvfile = 0x802939050, rename = 0x802939050, fsync = 0x802939050, stat = 0x802939050, fstat = 0x802939050, lstat = 0x802939050, unlink = 0x802939050, chmod = 0x802939050, fchmod = 0x802939050, chown = 0x802939050, fchown = 0x802939050, lchown = 0x802939050, chdir = 0x802939050, getwd = 0x802939050, ntimes = 0x802939050, ftruncate = 0x802939050, lock = 0x802939050, kernel_flock = 0x802939050, linux_setlease = 0x802939050, getlock = 0x802939050, symlink = 0x802939050, vfs_readlink = 0x802939050, link = 0x802939050, mknod = 0x802939050, realpath = 0x802939050, notify_watch = 0x802939050, chflags = 0x802939050, file_id_create = 0x802939850, streaminfo = 0x802939050, get_real_filename = 0x802939050, fget_nt_acl = 0x802939050, get_nt_acl = 0x802939050, fset_nt_acl = 0x802939050, chmod_acl = 0x802939050, fchmod_acl = 0x802939050, sys_acl_get_entry = 0x802939050, sys_acl_get_tag_type = 0x802939050, sys_acl_get_permset = 0x802939050, ---Type to continue, or q to quit--- sys_acl_get_qualifier = 0x802939050, sys_acl_get_file = 0x802939050, sys_acl_get_fd = 0x802939050, sys_acl_clear_perms = 0x802939050, sys_acl_add_perm = 0x802939050, sys_acl_to_text = 0x802939050, sys_acl_init = 0x802939050, sys_acl_create_entry = 0x802939050, sys_acl_set_tag_type = 0x802939050, sys_acl_set_qualifier = 0x802939050, sys_acl_set_permset = 0x802939050, sys_acl_valid = 0x802939050, sys_acl_set_file = 0x802939050, sys_acl_set_fd = 0x802939050, sys_acl_delete_def_file = 0x802939050, sys_acl_get_perm = 0x802939050, sys_acl_free_text = 0x802939050, sys_acl_free_acl = 0x802939050, sys_acl_free_qualifier = 0x802939050, getxattr = 0x802939050, lgetxattr = 0x802939050, fgetxattr = 0x802939050, listxattr = 0x802939050, llistxattr = 0x802939050, flistxattr = 0x802939050, removexattr = 0x802939050, lremovexattr = 0x802939050, fremovexattr = 0x802939050, setxattr = 0x802939050, lsetxattr = 0x802939050, fsetxattr = 0x802939050, aio_read = 0x802939050, aio_write = 0x802939050, aio_return = 0x802939050, aio_cancel = 0x802939050, aio_error = 0x802939050, aio_fsync = 0x802939050, aio_suspend = 0x802939050, aio_force = 0x802939050, is_offline = 0x802939050, set_offline = 0x802939050}}, vfs_handles = 0x802939850, server_info = 0x80298b350, force_group_gid = 4294967295, client_address = "10.0.8.115\000", 'ñ' , vuid = 100, lastused = 1250703882, lastused_count = 1250703884, used = true, num_files_open = 0, num_smb_operations = 1584485, encrypt_level = 2, encrypted_tid = false, case_sensitive = false, case_preserve = true, ---Type to continue, or q to quit--- short_case_preserve = true, fs_capabilities = 3, hide_list = 0x0, veto_list = 0x0, veto_oplock_list = 0x0, aio_write_behind_list = 0x0, dfree_info = 0x0, pending_trans = 0x0, notify_ctx = 0x802905070} (gdb) print *req $101 = {flags2 = 51203, smbpid = 7236, mid = 5708, vuid = 100, tid = 1, wct = 1 '\001', inbuf = 0x802974480 "", outbuf = 0x0, unread_bytes = 0, encrypted = false, conn = 0x802927050} (gdb) print dirtype $102 = 22 (gdb) print name_in $103 = 0x802974660 "torture.lck" (gdb) print has_wild $104 = false (gdb) n 2431 char *mask = NULL; (gdb) n 2432 char *name = NULL; (gdb) n 2433 char *p = NULL; (gdb) n 2434 int count=0; (gdb) n 2435 NTSTATUS status = NT_STATUS_OK; (gdb) n 2437 TALLOC_CTX *ctx = talloc_tos(); (gdb) n 2439 status = unix_convert(ctx, conn, name_in, has_wild, &name, NULL, &sbuf); (gdb) list 2434 int count=0; 2435 NTSTATUS status = NT_STATUS_OK; 2436 SMB_STRUCT_STAT sbuf; 2437 TALLOC_CTX *ctx = talloc_tos(); 2438 2439 status = unix_convert(ctx, conn, name_in, has_wild, &name, NULL, &sbuf); 2440 if (!NT_STATUS_IS_OK(status)) { 2441 return status; 2442 } 2443 (gdb) s unix_convert (ctx=0x802974050, conn=0x802927050, orig_path=0x802974660 "torture.lck", allow_wcard_last_component=false, pp_conv_path=0x7fffffffe518, pp_saved_last_component=0x0, pst=0x7fffffffe490) at smbd/filename.c:131 131 char *dirpath = NULL; (gdb) list 126 char **pp_saved_last_component, 127 SMB_STRUCT_STAT *pst) 128 { 129 SMB_STRUCT_STAT st; 130 char *start, *end; 131 char *dirpath = NULL; 132 char *name = NULL; 133 char *stream = NULL; 134 bool component_was_mangled = False; 135 bool name_has_wildcard = False; (gdb) n 132 char *name = NULL; (gdb) n 133 char *stream = NULL; (gdb) n 134 bool component_was_mangled = False; (gdb) n 135 bool name_has_wildcard = False; (gdb) n 136 bool posix_pathnames = false; (gdb) n 138 int ret = -1; (gdb) n 140 SET_STAT_INVALID(*pst); (gdb) n 141 *pp_conv_path = NULL; (gdb) print *pst $105 = {st_dev = 4294960320, st_ino = 1, st_mode = 26, st_nlink = 0, st_uid = 0, st_gid = 43467946, st_rdev = 8, st_atimespec = { tv_sec = 140737488348712, tv_nsec = 34403206272}, st_mtimespec = { tv_sec = 34403205200, tv_nsec = 13}, st_ctimespec = {tv_sec = 34403206752, tv_nsec = 13}, st_size = 12680301, st_blocks = 140737488348464, st_blksize = 8033335, st_flags = 0, st_gen = 1002, st_lspare = -1, st_birthtimespec = {tv_sec = 34403206763, tv_nsec = 34403206764}} (gdb) n 142 if(pp_saved_last_component) { (gdb) n 146 if (conn->printer) { (gdb) list 141 *pp_conv_path = NULL; 142 if(pp_saved_last_component) { 143 *pp_saved_last_component = NULL; 144 } 145 146 if (conn->printer) { 147 /* we don't ever use the filenames on a printer share as a 148 filename - so don't convert them */ 149 if (!(*pp_conv_path = talloc_strdup(ctx,orig_path))) { 150 return NT_STATUS_NO_MEMORY; (gdb) n 155 DEBUG(5, ("unix_convert called on file \"%s\"\n", orig_path)); (gdb) list 150 return NT_STATUS_NO_MEMORY; 151 } 152 return NT_STATUS_OK; 153 } 154 155 DEBUG(5, ("unix_convert called on file \"%s\"\n", orig_path)); 156 157 /* 158 * Conversion to basic unix format is already done in 159 * check_path_syntax(). (gdb) n 168 SMB_ASSERT(*orig_path != '/'); (gdb) n 179 if (!*orig_path) { (gdb) list 174 * searching the cache, but not if we are in a 175 * printing share. 176 * As we know this is valid we can return true here. 177 */ 178 179 if (!*orig_path) { 180 if (!(name = talloc_strdup(ctx,"."))) { 181 return NT_STATUS_NO_MEMORY; 182 } 183 if (SMB_VFS_STAT(conn,name,&st) == 0) { (gdb) print orig_path $106 = 0x802974660 "torture.lck" (gdb) n 192 if (orig_path[0] == '.' && (orig_path[1] == '/' || (gdb) n 204 if (!(name = talloc_strdup(ctx, orig_path))) { (gdb) list 199 &orig_path[2], allow_wcard_last_component); 200 } 201 return result; 202 } 203 204 if (!(name = talloc_strdup(ctx, orig_path))) { 205 DEBUG(0, ("talloc_strdup failed\n")); 206 return NT_STATUS_NO_MEMORY; 207 } 208 (gdb) n 218 if (conn->case_sensitive && !conn->case_preserve && (gdb) list 213 * This is in conflict with the current (3.0.20) man page, but is 214 * what people expect from the "large directory howto". I'll update 215 * the man page. Thanks to jht@samba.org for finding this. JRA. 216 */ 217 218 if (conn->case_sensitive && !conn->case_preserve && 219 !conn->short_case_preserve) { 220 strnorm(name, lp_defaultcase(SNUM(conn))); 221 } 222 (gdb) print conn-case_sensitive No symbol "case_sensitive" in current context. (gdb) print conn->case_sensitive $107 = false (gdb) print conn->case_preserve $108 = true (gdb) n 227 if(pp_saved_last_component) { (gdb) print pp_saved_last_component $109 = (char **) 0x0 (gdb) n 237 posix_pathnames = lp_posix_pathnames(); (gdb) print posix_pathnames $110 = false (gdb) n 239 if (!posix_pathnames) { (gdb) print posix_pathnames $111 = false (gdb) n 240 stream = strchr_m(name, ':'); (gdb) n 242 if (stream != NULL) { (gdb) n 253 start = name; (gdb) n 261 if((!conn->case_sensitive || !(conn->fs_capabilities & FILE_CASE_SENSITIVE_SEARCH)) && (gdb) print stream $112 = 0x0 (gdb) print conn->case_sensitive $113 = false (gdb) print conn->fs_capabilities $114 = 3 (gdb) n 272 if ((dirpath == NULL) && (!(dirpath = talloc_strdup(ctx,"")))) { (gdb) n 282 if (posix_pathnames) { (gdb) list 277 278 /* 279 * stat the name - if it exists then we are all done! 280 */ 281 282 if (posix_pathnames) { 283 ret = SMB_VFS_LSTAT(conn,name,&st); 284 } else { 285 ret = SMB_VFS_STAT(conn,name,&st); 286 } (gdb) print posix_pathnames $115 = false (gdb) n 285 ret = SMB_VFS_STAT(conn,name,&st); (gdb) print conn $116 = (connection_struct *) 0x802927050 (gdb) print name $117 = 0x802974700 "torture.lck" (gdb) print st $118 = {st_dev = 80, st_ino = 0, st_mode = 16384, st_nlink = 663, st_uid = 8, st_gid = 43466752, st_rdev = 8, st_atimespec = {tv_sec = 34403205200, tv_nsec = 34403205200}, st_mtimespec = {tv_sec = 34403206576, tv_nsec = 34403206576}, st_ctimespec = {tv_sec = 34403206496, tv_nsec = 140737488347568}, st_size = 34396601705, st_blocks = 12131760, st_blksize = 43468208, st_flags = 8, st_gen = 43466752, st_lspare = 8, st_birthtimespec = {tv_sec = 34403206496, tv_nsec = 140737488347632}} (gdb) n 288 if (ret == 0) { (gdb) print ret $119 = -1 (gdb) print errno $120 = 2 (gdb) echo "errno 2 is ENOENT: No such file or directory." "errno 2 is ENOENT: No such file or directory."(gdb) "errno 2 is ENOENT: No such file or directory."(gdb) echo (gdb) print "errno 2 is ENOENT: No such file or directory." $121 = "errno 2 is ENOENT: No such file or directory." (gdb) $122 = "errno 2 is ENOENT: No such file or directory." (gdb) n 309 DEBUG(5,("unix_convert begin: name = %s, dirpath = %s, start = %s\n", (gdb) list 304 DEBUG(5,("conversion finished %s -> %s\n",orig_path, name)); 305 *pst = st; 306 goto done; 307 } 308 309 DEBUG(5,("unix_convert begin: name = %s, dirpath = %s, start = %s\n", 310 name, dirpath, start)); 311 312 /* 313 * A special case - if we don't have any mangling chars and are case (gdb) n 318 if ((conn->case_sensitive || !(conn->fs_capabilities & FILE_CASE_SENSITIVE_SEARCH)) && (gdb) n 328 if (mangle_is_mangled(start, conn->params)) { (gdb) n 347 end = strchr(start, '/'); (gdb) list 342 for (; start ; start = (end?end+1:(char *)NULL)) { 343 /* 344 * Pinpoint the end of this section of the filename. 345 */ 346 /* mb safe. '/' can't be in any encoded char. */ 347 end = strchr(start, '/'); 348 349 /* 350 * Chop the name at this point. 351 */ (gdb) print start $123 = 0x802974700 "torture.lck" (gdb) print end $124 = 0x7fffffffe390 "ªD\227\002\b" (gdb) n 352 if (end) { (gdb) print end $125 = 0x0 (gdb) n 356 if (pp_saved_last_component) { (gdb) list 351 */ 352 if (end) { 353 *end = 0; 354 } 355 356 if (pp_saved_last_component) { 357 TALLOC_FREE(*pp_saved_last_component); 358 *pp_saved_last_component = talloc_strdup(ctx, 359 end ? end + 1 : start); 360 if (!*pp_saved_last_component) { (gdb) print pp_saved_last_component $126 = (char **) 0x0 (gdb) n 368 if (ISDOT(start)) { (gdb) print start $127 = 0x802974700 "torture.lck" (gdb) n 382 name_has_wildcard = ms_has_wild(start); (gdb) n 385 if (name_has_wildcard && !allow_wcard_last_component) { (gdb) n 391 if (name_has_wildcard && end) { (gdb) n 400 if (posix_pathnames) { (gdb) print posix_pathnames $128 = false (gdb) list 395 396 /* 397 * Check if the name exists up to this point. 398 */ 399 400 if (posix_pathnames) { 401 ret = SMB_VFS_LSTAT(conn,name, &st); 402 } else { 403 ret = SMB_VFS_STAT(conn,name, &st); 404 } (gdb) print ret $129 = -1 (gdb) n 403 ret = SMB_VFS_STAT(conn,name, &st); (gdb) n 406 if (ret == 0) { (gdb) print ret $130 = -1 (gdb) print errno $131 = 2 (gdb) print "File still does not exist" $132 = "File still does not exist" (gdb) n 441 char *found_name = NULL; (gdb) list 436 437 *pst = st; 438 } 439 440 } else { 441 char *found_name = NULL; 442 443 /* Stat failed - ensure we don't use it. */ 444 SET_STAT_INVALID(st); 445 (gdb) print st $133 = {st_dev = 80, st_ino = 0, st_mode = 16384, st_nlink = 663, st_uid = 8, st_gid = 43466752, st_rdev = 8, st_atimespec = {tv_sec = 34403205200, tv_nsec = 34403205200}, st_mtimespec = {tv_sec = 34403206576, tv_nsec = 34403206576}, st_ctimespec = {tv_sec = 34403206496, tv_nsec = 140737488347568}, st_size = 34396601705, st_blocks = 12131760, st_blksize = 43468208, st_flags = 8, st_gen = 43466752, st_lspare = 8, st_birthtimespec = {tv_sec = 34403206496, tv_nsec = 140737488347632}} (gdb) n 444 SET_STAT_INVALID(st); (gdb) print st $134 = {st_dev = 80, st_ino = 0, st_mode = 16384, st_nlink = 663, st_uid = 8, st_gid = 43466752, st_rdev = 8, st_atimespec = {tv_sec = 34403205200, tv_nsec = 34403205200}, st_mtimespec = {tv_sec = 34403206576, tv_nsec = 34403206576}, st_ctimespec = {tv_sec = 34403206496, tv_nsec = 140737488347568}, st_size = 34396601705, st_blocks = 12131760, st_blksize = 43468208, st_flags = 8, st_gen = 43466752, st_lspare = 8, st_birthtimespec = {tv_sec = 34403206496, tv_nsec = 140737488347632}} (gdb) n 450 errno = 0; (gdb) print st $135 = {st_dev = 80, st_ino = 0, st_mode = 16384, st_nlink = 0, st_uid = 8, st_gid = 43466752, st_rdev = 8, st_atimespec = {tv_sec = 34403205200, tv_nsec = 34403205200}, st_mtimespec = {tv_sec = 34403206576, tv_nsec = 34403206576}, st_ctimespec = {tv_sec = 34403206496, tv_nsec = 140737488347568}, st_size = 34396601705, st_blocks = 12131760, st_blksize = 43468208, st_flags = 8, st_gen = 43466752, st_lspare = 8, st_birthtimespec = {tv_sec = 34403206496, tv_nsec = 140737488347632}} (gdb) n 456 if (name_has_wildcard || (gdb) n 462 if (end) { (gdb) list 457 (get_real_filename_mangled( 458 conn, dirpath, start, 459 talloc_tos(), &found_name) == -1)) { 460 char *unmangled; 461 462 if (end) { 463 /* 464 * An intermediate part of the name 465 * can't be found. 466 */ (gdb) print dirpath $136 = 0x8029747c0 "" (gdb) print start $137 = 0x802974700 "torture.lck" (gdb) print found_name $138 = 0x0 (gdb) list 467 DEBUG(5,("Intermediate not found %s\n", 468 start)); 469 *end = '/'; 470 471 /* 472 * We need to return the fact that the 473 * intermediate name resolution failed. 474 * This is used to return an error of 475 * ERRbadpath rather than ERRbadfile. 476 * Some Windows applications depend on (gdb) n 506 if ((errno != 0) && (errno != ENOENT) (gdb) print errno $139 = 2 (gdb) n 531 if (!conn->case_preserve || (gdb) list 526 * We need to strupper() or strlower() it as 527 * this conversion may be used for file creation 528 * purposes. Fix inspired by 529 * Thomas Neumann . 530 */ 531 if (!conn->case_preserve || 532 (mangle_is_8_3(start, False, 533 conn->params) && 534 !conn->short_case_preserve)) { 535 strnorm(start, (gdb) n 544 if (mangle_is_mangled(start, conn->params) (gdb) n 571 DEBUG(5,("New file %s\n",start)); (gdb) n Program received signal SIGUSR1, User defined signal 1. unix_convert (ctx=0x802974050, conn=0x802927050, orig_path=0x802974660 "torture.lck", allow_wcard_last_component=false, pp_conv_path=0x7fffffffe518, pp_saved_last_component=0x0, pst=0x7fffffffe490) at smbd/filename.c:571 571 DEBUG(5,("New file %s\n",start)); (gdb) n 718 if (stream != NULL) { (gdb) print errno $140 = 2 (gdb) print dirpath $141 = 0x8029747c0 "" (gdb) $142 = 0x8029747c0 "" (gdb) list 713 */ 714 715 DEBUG(5,("conversion finished %s -> %s\n",orig_path, name)); 716 717 done: 718 if (stream != NULL) { 719 char *tmp = NULL; 720 721 result = build_stream_path(ctx, conn, orig_path, name, stream, 722 pst, &tmp); (gdb) print start $143 = 0x802974700 "torture.lck" (gdb) n 732 *pp_conv_path = name; (gdb) print name $144 = 0x802974700 "torture.lck" (gdb) print result $145 = {v = 43466752} (gdb) print "seems like something else should have happened since the file does not exist ... althogh the name has been converted" $146 = "seems like something else should have happened since the file does not exist ... althogh the name has been converted" (gdb) n 733 TALLOC_FREE(dirpath); (gdb) n 734 return NT_STATUS_OK; (gdb) n 750 } (gdb) n unlink_internals (conn=0x802927050, req=0x802974520, dirtype=22, name_in=0x802974660 "torture.lck", has_wild=false) at smbd/reply.c:2440 2440 if (!NT_STATUS_IS_OK(status)) { (gdb) list 2435 NTSTATUS status = NT_STATUS_OK; 2436 SMB_STRUCT_STAT sbuf; 2437 TALLOC_CTX *ctx = talloc_tos(); 2438 2439 status = unix_convert(ctx, conn, name_in, has_wild, &name, NULL, &sbuf); 2440 if (!NT_STATUS_IS_OK(status)) { 2441 return status; 2442 } 2443 2444 p = strrchr_m(name,'/'); (gdb) print status $147 = {v = 0} (gdb) print name_in $148 = 0x802974660 "torture.lck" (gdb) print name $149 = 0x802974700 "torture.lck" (gdb) n 2444 p = strrchr_m(name,'/'); (gdb) n 2445 if (!p) { (gdb) n 2446 directory = talloc_strdup(ctx, "."); (gdb) n 2447 if (!directory) { (gdb) print directory $150 = 0x802974910 "." (gdb) n 2450 mask = name; (gdb) n 2466 if (!VALID_STAT(sbuf) && mangle_is_mangled(mask,conn->params)) { (gdb) n 2477 if (!has_wild) { (gdb) n 2478 directory = talloc_asprintf(ctx, (gdb) n 2482 if (!directory) { (gdb) list 2477 if (!has_wild) { 2478 directory = talloc_asprintf(ctx, 2479 "%s/%s", 2480 directory, 2481 mask); 2482 if (!directory) { 2483 return NT_STATUS_NO_MEMORY; 2484 } 2485 if (dirtype == 0) { 2486 dirtype = FILE_ATTRIBUTE_NORMAL; (gdb) n 2485 if (dirtype == 0) { (gdb) print dirtype $151 = 22 (gdb) n 2489 status = check_name(conn, directory); (gdb) print directory $152 = 0x802974970 "./torture.lck" (gdb) print *conn $153 = {next = 0x0, prev = 0x0, cnum = 1, params = 0x8029023f0, force_user = false, vuid_cache = {next_entry = 1, array = {{ server_info = 0x80298b350, vuid = 100, read_only = false, admin_user = false}, {server_info = 0x0, vuid = 0, read_only = false, admin_user = false} }}, dirptr = 0x0, printer = false, ipc = false, read_only = false, admin_user = false, dirpath = 0xb964fb "", connectpath = 0x80290b2e0 "/var/samba/exports/smbtorture/meddy/smbtorture", origpath = 0x80290b310 "/var/samba/exports/smbtorture/meddy/smbtorture", vfs = {ops = {connect_fn = 0x802a211b0 , disconnect = 0x802a21620 , disk_free = 0x547880 , get_quota = 0x5478e0 , set_quota = 0x547910 , get_shadow_copy_data = 0x547940 , statvfs = 0x547970 , fs_capabilities = 0x5479a0 , opendir = 0x5479b0 , readdir = 0x547ae0 , seekdir = 0x547bb0 , telldir = 0x547c80 , rewind_dir = 0x547d50 , mkdir = 0x547e10 , rmdir = 0x547fb0 , closedir = 0x548080 , open = 0x548150 , close_fn = 0x548230 , vfs_read = 0x548300 , pread = 0x548410 , write = 0x548570 , ---Type to continue, or q to quit--- pwrite = 0x548680 , lseek = 0x5487d0 , sendfile = 0x5488f0 , recvfile = 0x548a10 , rename = 0x548d30 , fsync = 0x548e20 , stat = 0x548ef0 , fstat = 0x548fc0 , lstat = 0x549090 , unlink = 0x549160 , chmod = 0x549230 , fchmod = 0x5493a0 , chown = 0x549510 , fchown = 0x5495e0 , lchown = 0x5496c0 , chdir = 0x549790 , getwd = 0x549860 , ntimes = 0x549930 , ftruncate = 0x549d90 , lock = 0x54a110 , kernel_flock = 0x54a200 , linux_setlease = 0x54a3e0 , getlock = 0x54a2e0 , symlink = 0x54a4b0 , vfs_readlink = 0x54a580 , link = 0x54a660 , mknod = 0x54a730 , realpath = 0x54a810 , notify_watch = 0x54a8f0 , chflags = 0x54a920 , file_id_create = 0x802a21730 , streaminfo = 0x54a990 , get_real_filename = 0x54abc0 , fget_nt_acl = 0x54ac10 , get_nt_acl = 0x54acf0 , ---Type to continue, or q to quit--- fset_nt_acl = 0x54add0 , chmod_acl = 0x54aeb0 , fchmod_acl = 0x54af90 , sys_acl_get_entry = 0x54b060 , sys_acl_get_tag_type = 0x54b090 , sys_acl_get_permset = 0x54b0c0 , sys_acl_get_qualifier = 0x54b0f0 , sys_acl_get_file = 0x54b110 , sys_acl_get_fd = 0x54b140 , sys_acl_clear_perms = 0x54b160 , sys_acl_add_perm = 0x54b180 , sys_acl_to_text = 0x54b1b0 , sys_acl_init = 0x54b1e0 , sys_acl_create_entry = 0x54b200 , sys_acl_set_tag_type = 0x54b230 , sys_acl_set_qualifier = 0x54b260 , sys_acl_set_permset = 0x54b290 , sys_acl_valid = 0x54b2c0 , sys_acl_set_file = 0x54b2e0 , sys_acl_set_fd = 0x54b310 , sys_acl_delete_def_file = 0x54b340 , sys_acl_get_perm = 0x54b360 , sys_acl_free_text = 0x54b390 , sys_acl_free_acl = 0x54b3b0 , sys_acl_free_qualifier = 0x54b3d0 , getxattr = 0x54b400 , ---Type to continue, or q to quit--- lgetxattr = 0x54b440 , fgetxattr = 0x54b480 , listxattr = 0x54b4c0 , llistxattr = 0x54b4f0 , flistxattr = 0x54b520 , removexattr = 0x54b560 , lremovexattr = 0x54b590 , fremovexattr = 0x54b5c0 , setxattr = 0x54b5f0 , lsetxattr = 0x54b630 , fsetxattr = 0x54b670 , aio_read = 0x54b6c0 , aio_write = 0x54b6e0 , aio_return_fn = 0x54b700 , aio_cancel = 0x54b720 , aio_error_fn = 0x54b750 , aio_fsync = 0x54b770 , aio_suspend = 0x54b7a0 , aio_force = 0x54b7d0 , is_offline = 0x54b7f0 , set_offline = 0x54b8d0 }, handles = { connect_hnd = 0x802939850, disconnect = 0x802939850, disk_free = 0x802939050, get_quota = 0x802939050, set_quota = 0x802939050, get_shadow_copy_data = 0x802939050, statvfs = 0x802939050, fs_capabilities = 0x802939050, opendir = 0x802939050, readdir = 0x802939050, seekdir = 0x802939050, ---Type to continue, or q to quit--- telldir = 0x802939050, rewind_dir = 0x802939050, mkdir = 0x802939050, rmdir = 0x802939050, closedir = 0x802939050, open = 0x802939050, close_hnd = 0x802939050, vfs_read = 0x802939050, pread = 0x802939050, write = 0x802939050, pwrite = 0x802939050, lseek = 0x802939050, sendfile = 0x802939050, recvfile = 0x802939050, rename = 0x802939050, fsync = 0x802939050, stat = 0x802939050, fstat = 0x802939050, lstat = 0x802939050, unlink = 0x802939050, chmod = 0x802939050, fchmod = 0x802939050, chown = 0x802939050, fchown = 0x802939050, lchown = 0x802939050, chdir = 0x802939050, getwd = 0x802939050, ntimes = 0x802939050, ftruncate = 0x802939050, lock = 0x802939050, kernel_flock = 0x802939050, linux_setlease = 0x802939050, getlock = 0x802939050, symlink = 0x802939050, vfs_readlink = 0x802939050, link = 0x802939050, mknod = 0x802939050, realpath = 0x802939050, notify_watch = 0x802939050, chflags = 0x802939050, file_id_create = 0x802939850, streaminfo = 0x802939050, get_real_filename = 0x802939050, fget_nt_acl = 0x802939050, get_nt_acl = 0x802939050, fset_nt_acl = 0x802939050, chmod_acl = 0x802939050, fchmod_acl = 0x802939050, sys_acl_get_entry = 0x802939050, sys_acl_get_tag_type = 0x802939050, sys_acl_get_permset = 0x802939050, sys_acl_get_qualifier = 0x802939050, sys_acl_get_file = 0x802939050, sys_acl_get_fd = 0x802939050, sys_acl_clear_perms = 0x802939050, sys_acl_add_perm = 0x802939050, sys_acl_to_text = 0x802939050, sys_acl_init = 0x802939050, sys_acl_create_entry = 0x802939050, sys_acl_set_tag_type = 0x802939050, sys_acl_set_qualifier = 0x802939050, sys_acl_set_permset = 0x802939050, sys_acl_valid = 0x802939050, ---Type to continue, or q to quit--- sys_acl_set_file = 0x802939050, sys_acl_set_fd = 0x802939050, sys_acl_delete_def_file = 0x802939050, sys_acl_get_perm = 0x802939050, sys_acl_free_text = 0x802939050, sys_acl_free_acl = 0x802939050, sys_acl_free_qualifier = 0x802939050, getxattr = 0x802939050, lgetxattr = 0x802939050, fgetxattr = 0x802939050, listxattr = 0x802939050, llistxattr = 0x802939050, flistxattr = 0x802939050, removexattr = 0x802939050, lremovexattr = 0x802939050, fremovexattr = 0x802939050, setxattr = 0x802939050, lsetxattr = 0x802939050, fsetxattr = 0x802939050, aio_read = 0x802939050, aio_write = 0x802939050, aio_return = 0x802939050, aio_cancel = 0x802939050, aio_error = 0x802939050, aio_fsync = 0x802939050, aio_suspend = 0x802939050, aio_force = 0x802939050, is_offline = 0x802939050, set_offline = 0x802939050}}, vfs_opaque = {ops = { connect_fn = 0x547850 , disconnect = 0x547870 , disk_free = 0x547880 , get_quota = 0x5478e0 , set_quota = 0x547910 , get_shadow_copy_data = 0x547940 , statvfs = 0x547970 , fs_capabilities = 0x5479a0 , opendir = 0x5479b0 , readdir = 0x547ae0 , seekdir = 0x547bb0 , ---Type to continue, or q to quit--- telldir = 0x547c80 , rewind_dir = 0x547d50 , mkdir = 0x547e10 , rmdir = 0x547fb0 , closedir = 0x548080 , open = 0x548150 , close_fn = 0x548230 , vfs_read = 0x548300 , pread = 0x548410 , write = 0x548570 , pwrite = 0x548680 , lseek = 0x5487d0 , sendfile = 0x5488f0 , recvfile = 0x548a10 , rename = 0x548d30 , fsync = 0x548e20 , stat = 0x548ef0 , fstat = 0x548fc0 , lstat = 0x549090 , unlink = 0x549160 , chmod = 0x549230 , fchmod = 0x5493a0 , chown = 0x549510 , fchown = 0x5495e0 , lchown = 0x5496c0 , chdir = 0x549790 , getwd = 0x549860 , ntimes = 0x549930 , ftruncate = 0x549d90 , lock = 0x54a110 , kernel_flock = 0x54a200 , linux_setlease = 0x54a3e0 , getlock = 0x54a2e0 , symlink = 0x54a4b0 , vfs_readlink = 0x54a580 , link = 0x54a660 , mknod = 0x54a730 , realpath = 0x54a810 , notify_watch = 0x54a8f0 , ---Type to continue, or q to quit--- chflags = 0x54a920 , file_id_create = 0x802a21730 , streaminfo = 0x54a990 , get_real_filename = 0x54abc0 , fget_nt_acl = 0x54ac10 , get_nt_acl = 0x54acf0 , fset_nt_acl = 0x54add0 , chmod_acl = 0x54aeb0 , fchmod_acl = 0x54af90 , sys_acl_get_entry = 0x54b060 , sys_acl_get_tag_type = 0x54b090 , sys_acl_get_permset = 0x54b0c0 , sys_acl_get_qualifier = 0x54b0f0 , sys_acl_get_file = 0x54b110 , sys_acl_get_fd = 0x54b140 , sys_acl_clear_perms = 0x54b160 , sys_acl_add_perm = 0x54b180 , sys_acl_to_text = 0x54b1b0 , sys_acl_init = 0x54b1e0 , sys_acl_create_entry = 0x54b200 , sys_acl_set_tag_type = 0x54b230 , sys_acl_set_qualifier = 0x54b260 , sys_acl_set_permset = 0x54b290 , sys_acl_valid = 0x54b2c0 , sys_acl_set_file = 0x54b2e0 , sys_acl_set_fd = 0x54b310 , ---Type to continue, or q to quit--- sys_acl_delete_def_file = 0x54b340 , sys_acl_get_perm = 0x54b360 , sys_acl_free_text = 0x54b390 , sys_acl_free_acl = 0x54b3b0 , sys_acl_free_qualifier = 0x54b3d0 , getxattr = 0x54b400 , lgetxattr = 0x54b440 , fgetxattr = 0x54b480 , listxattr = 0x54b4c0 , llistxattr = 0x54b4f0 , flistxattr = 0x54b520 , removexattr = 0x54b560 , lremovexattr = 0x54b590 , fremovexattr = 0x54b5c0 , setxattr = 0x54b5f0 , lsetxattr = 0x54b630 , fsetxattr = 0x54b670 , aio_read = 0x54b6c0 , aio_write = 0x54b6e0 , aio_return_fn = 0x54b700 , aio_cancel = 0x54b720 , aio_error_fn = 0x54b750 , aio_fsync = 0x54b770 , aio_suspend = 0x54b7a0 , aio_force = 0x54b7d0 , is_offline = 0x54b7f0 , ---Type to continue, or q to quit--- set_offline = 0x54b8d0 }, handles = { connect_hnd = 0x802939050, disconnect = 0x802939050, disk_free = 0x802939050, get_quota = 0x802939050, set_quota = 0x802939050, get_shadow_copy_data = 0x802939050, statvfs = 0x802939050, fs_capabilities = 0x802939050, opendir = 0x802939050, readdir = 0x802939050, seekdir = 0x802939050, telldir = 0x802939050, rewind_dir = 0x802939050, mkdir = 0x802939050, rmdir = 0x802939050, closedir = 0x802939050, open = 0x802939050, close_hnd = 0x802939050, vfs_read = 0x802939050, pread = 0x802939050, write = 0x802939050, pwrite = 0x802939050, lseek = 0x802939050, sendfile = 0x802939050, recvfile = 0x802939050, rename = 0x802939050, fsync = 0x802939050, stat = 0x802939050, fstat = 0x802939050, lstat = 0x802939050, unlink = 0x802939050, chmod = 0x802939050, fchmod = 0x802939050, chown = 0x802939050, fchown = 0x802939050, lchown = 0x802939050, chdir = 0x802939050, getwd = 0x802939050, ntimes = 0x802939050, ftruncate = 0x802939050, lock = 0x802939050, kernel_flock = 0x802939050, linux_setlease = 0x802939050, getlock = 0x802939050, symlink = 0x802939050, vfs_readlink = 0x802939050, link = 0x802939050, mknod = 0x802939050, realpath = 0x802939050, notify_watch = 0x802939050, chflags = 0x802939050, file_id_create = 0x802939850, streaminfo = 0x802939050, get_real_filename = 0x802939050, fget_nt_acl = 0x802939050, get_nt_acl = 0x802939050, fset_nt_acl = 0x802939050, chmod_acl = 0x802939050, fchmod_acl = 0x802939050, sys_acl_get_entry = 0x802939050, sys_acl_get_tag_type = 0x802939050, sys_acl_get_permset = 0x802939050, ---Type to continue, or q to quit--- sys_acl_get_qualifier = 0x802939050, sys_acl_get_file = 0x802939050, sys_acl_get_fd = 0x802939050, sys_acl_clear_perms = 0x802939050, sys_acl_add_perm = 0x802939050, sys_acl_to_text = 0x802939050, sys_acl_init = 0x802939050, sys_acl_create_entry = 0x802939050, sys_acl_set_tag_type = 0x802939050, sys_acl_set_qualifier = 0x802939050, sys_acl_set_permset = 0x802939050, sys_acl_valid = 0x802939050, sys_acl_set_file = 0x802939050, sys_acl_set_fd = 0x802939050, sys_acl_delete_def_file = 0x802939050, sys_acl_get_perm = 0x802939050, sys_acl_free_text = 0x802939050, sys_acl_free_acl = 0x802939050, sys_acl_free_qualifier = 0x802939050, getxattr = 0x802939050, lgetxattr = 0x802939050, fgetxattr = 0x802939050, listxattr = 0x802939050, llistxattr = 0x802939050, flistxattr = 0x802939050, removexattr = 0x802939050, lremovexattr = 0x802939050, fremovexattr = 0x802939050, setxattr = 0x802939050, lsetxattr = 0x802939050, fsetxattr = 0x802939050, aio_read = 0x802939050, aio_write = 0x802939050, aio_return = 0x802939050, aio_cancel = 0x802939050, aio_error = 0x802939050, aio_fsync = 0x802939050, aio_suspend = 0x802939050, aio_force = 0x802939050, is_offline = 0x802939050, set_offline = 0x802939050}}, vfs_handles = 0x802939850, server_info = 0x80298b350, force_group_gid = 4294967295, client_address = "10.0.8.115\000", 'ñ' , vuid = 100, lastused = 1250703882, lastused_count = 1250703884, used = true, num_files_open = 0, num_smb_operations = 1584485, encrypt_level = 2, encrypted_tid = false, case_sensitive = false, case_preserve = true, ---Type to continue, or q to quit--- short_case_preserve = true, fs_capabilities = 3, hide_list = 0x0, veto_list = 0x0, veto_oplock_list = 0x0, aio_write_behind_list = 0x0, dfree_info = 0x0, pending_trans = 0x0, notify_ctx = 0x802905070} (gdb) s check_name (conn=0x802927050, name=0x802974970 "./torture.lck") at smbd/filename.c:761 761 if (IS_VETO_PATH(conn, name)) { (gdb) list 756 a valid one for the user to access. 757 ****************************************************************************/ 758 759 NTSTATUS check_name(connection_struct *conn, const char *name) 760 { 761 if (IS_VETO_PATH(conn, name)) { 762 /* Is it not dot or dot dot. */ 763 if (!((name[0] == '.') && (!name[1] || 764 (name[1] == '.' && !name[2])))) { 765 DEBUG(5,("check_name: file path name %s vetoed\n", (gdb) n 771 if (!lp_widelinks(SNUM(conn)) || !lp_symlinks(SNUM(conn))) { (gdb) n 772 NTSTATUS status = check_reduced_name(conn,name); (gdb) print name $154 = 0x802974970 "./torture.lck" (gdb) s check_reduced_name (conn=0x802927050, fname=0x802974970 "./torture.lck") at smbd/vfs.c:848 848 bool free_resolved_name = False; (gdb) list 843 { 844 #ifdef REALPATH_TAKES_NULL 845 bool free_resolved_name = True; 846 #else 847 char resolved_name_buf[PATH_MAX+1]; 848 bool free_resolved_name = False; 849 #endif 850 char *resolved_name = NULL; 851 size_t con_path_len = strlen(conn->connectpath); 852 char *p = NULL; (gdb) n 850 char *resolved_name = NULL; (gdb) n 851 size_t con_path_len = strlen(conn->connectpath); (gdb) n 852 char *p = NULL; (gdb) n 854 DEBUG(3,("reduce_name [%s] [%s]\n", fname, conn->connectpath)); (gdb) rpint name Undefined command: "rpint". Try "help". (gdb) print fname $155 = 0x802974970 "./torture.lck" (gdb) print conn->connectpath $156 = 0x80290b2e0 "/var/samba/exports/smbtorture/meddy/smbtorture" (gdb) n 859 resolved_name = SMB_VFS_REALPATH(conn,fname,resolved_name_buf); (gdb) print resolved_name $157 = 0x0 (gdb) n 862 if (!resolved_name) { (gdb) print resolved_name $158 = 0x7fffffffdea0 "/var/samba/exports/smbtorture/meddy/smbtorture/torture.lck" (gdb) print errno $159 = 2 (gdb) list 857 resolved_name = SMB_VFS_REALPATH(conn,fname,NULL); 858 #else 859 resolved_name = SMB_VFS_REALPATH(conn,fname,resolved_name_buf); 860 #endif 861 862 if (!resolved_name) { 863 switch (errno) { 864 case ENOTDIR: 865 DEBUG(3,("reduce_name: Component not a directory in getting realpath for %s\n", fname)); 866 return map_nt_error_from_unix(errno); (gdb) n 926 DEBUG(10,("reduce_name realpath [%s] -> [%s]\n", fname, resolved_name)); (gdb) n 928 if (*resolved_name != '/') { (gdb) print resolved_name $160 = 0x7fffffffdea0 "/var/samba/exports/smbtorture/meddy/smbtorture/torture.lck" (gdb) list 923 } 924 } 925 926 DEBUG(10,("reduce_name realpath [%s] -> [%s]\n", fname, resolved_name)); 927 928 if (*resolved_name != '/') { 929 DEBUG(0,("reduce_name: realpath doesn't return absolute paths !\n")); 930 if (free_resolved_name) { 931 SAFE_FREE(resolved_name); 932 } (gdb) n 937 if (!lp_widelinks(SNUM(conn)) && (strncmp(conn->connectpath, resolved_name, con_path_len) != 0)) { (gdb) n 950 if (!lp_symlinks(SNUM(conn))) { (gdb) print $161 = 0x7fffffffdea0 "/var/samba/exports/smbtorture/meddy/smbtorture/torture.lck" (gdb) list 945 /* Check if we are allowing users to follow symlinks */ 946 /* Patch from David Clerc 947 University of Geneva */ 948 949 #ifdef S_ISLNK 950 if (!lp_symlinks(SNUM(conn))) { 951 SMB_STRUCT_STAT statbuf; 952 if ( (SMB_VFS_LSTAT(conn,fname,&statbuf) != -1) && 953 (S_ISLNK(statbuf.st_mode)) ) { 954 if (free_resolved_name) { (gdb) n 963 DEBUG(3,("reduce_name: %s reduced to %s\n", fname, resolved_name)); (gdb) n 964 if (free_resolved_name) { (gdb) n 967 return NT_STATUS_OK; (gdb) n 968 } (gdb) n check_name (conn=0x802927050, name=0x802974970 "./torture.lck") at smbd/filename.c:773 773 if (!NT_STATUS_IS_OK(status)) { (gdb) list 768 } 769 } 770 771 if (!lp_widelinks(SNUM(conn)) || !lp_symlinks(SNUM(conn))) { 772 NTSTATUS status = check_reduced_name(conn,name); 773 if (!NT_STATUS_IS_OK(status)) { 774 DEBUG(5,("check_name: name %s failed with %s\n",name, 775 nt_errstr(status))); 776 return status; 777 } (gdb) print status $162 = {v = 0} (gdb) n 780 return NT_STATUS_OK; (gdb) n 781 } (gdb) n unlink_internals (conn=0x802927050, req=0x802974520, dirtype=22, name_in=0x802974660 "torture.lck", has_wild=false) at smbd/reply.c:2490 2490 if (!NT_STATUS_IS_OK(status)) { (gdb) list 2485 if (dirtype == 0) { 2486 dirtype = FILE_ATTRIBUTE_NORMAL; 2487 } 2488 2489 status = check_name(conn, directory); 2490 if (!NT_STATUS_IS_OK(status)) { 2491 return status; 2492 } 2493 2494 status = do_unlink(conn, req, directory, dirtype); (gdb) print status $163 = {v = 0} (gdb) n 2494 status = do_unlink(conn, req, directory, dirtype); (gdb) print req $164 = (struct smb_request *) 0x802974520 (gdb) print con No symbol "con" in current context. (gdb) print conn $165 = (connection_struct *) 0x802927050 (gdb) print directory $166 = 0x802974970 "./torture.lck" (gdb) print dirtype $167 = 22 (gdb) s do_unlink (conn=0x802927050, req=0x802974520, fname=0x802974970 "./torture.lck", dirtype=22) at smbd/reply.c:2303 2303 uint32 dirtype_orig = dirtype; (gdb) list 2298 uint32 dirtype) 2299 { 2300 SMB_STRUCT_STAT sbuf; 2301 uint32 fattr; 2302 files_struct *fsp; 2303 uint32 dirtype_orig = dirtype; 2304 NTSTATUS status; 2305 2306 DEBUG(10,("do_unlink: %s, dirtype = %d\n", fname, dirtype )); 2307 (gdb) n 2306 DEBUG(10,("do_unlink: %s, dirtype = %d\n", fname, dirtype )); (gdb) n 2308 if (!CAN_WRITE(conn)) { (gdb) n 2312 if (SMB_VFS_LSTAT(conn,fname,&sbuf) != 0) { (gdb) list 2307 2308 if (!CAN_WRITE(conn)) { 2309 return NT_STATUS_MEDIA_WRITE_PROTECTED; 2310 } 2311 2312 if (SMB_VFS_LSTAT(conn,fname,&sbuf) != 0) { 2313 return map_nt_error_from_unix(errno); 2314 } 2315 2316 fattr = dos_mode(conn,fname,&sbuf); (gdb) n 2313 return map_nt_error_from_unix(errno); (gdb) print errno $168 = 2 (gdb) n 2420 } (gdb) n unlink_internals (conn=0x802927050, req=0x802974520, dirtype=22, name_in=0x802974660 "torture.lck", has_wild=false) at smbd/reply.c:2495 2495 if (!NT_STATUS_IS_OK(status)) { (gdb) list 2490 if (!NT_STATUS_IS_OK(status)) { 2491 return status; 2492 } 2493 2494 status = do_unlink(conn, req, directory, dirtype); 2495 if (!NT_STATUS_IS_OK(status)) { 2496 return status; 2497 } 2498 2499 count++; (gdb) print status $169 = {v = 3221225524} (gdb) n 2496 return status; (gdb) n 2582 } (gdb) n reply_unlink (req=0x802974520) at smbd/reply.c:2637 2637 if (!NT_STATUS_IS_OK(status)) { (gdb) print status $170 = {v = 3221225524} (gdb) n 2638 if (open_was_deferred(req->mid)) { (gdb) print req->mid $171 = 5708 (gdb) s open_was_deferred (mid=5708) at smbd/process.c:517 517 for (pml = deferred_open_queue; pml; pml = pml->next) { (gdb) list 512 513 bool open_was_deferred(uint16 mid) 514 { 515 struct pending_message_list *pml; 516 517 for (pml = deferred_open_queue; pml; pml = pml->next) { 518 if (SVAL(pml->buf.data,smb_mid) == mid) { 519 return True; 520 } 521 } (gdb) n 518 if (SVAL(pml->buf.data,smb_mid) == mid) { (gdb) n 519 return True; (gdb) n 523 } (gdb) n reply_unlink (req=0x802974520) at smbd/reply.c:2640 2640 END_PROFILE(SMBunlink); (gdb) print "open was deferred" $172 = "open was deferred" (gdb) list 2635 status = unlink_internals(conn, req, dirtype, name, 2636 path_contains_wcard); 2637 if (!NT_STATUS_IS_OK(status)) { 2638 if (open_was_deferred(req->mid)) { 2639 /* We have re-scheduled this call. */ 2640 END_PROFILE(SMBunlink); 2641 return; 2642 } 2643 reply_nterror(req, status); 2644 END_PROFILE(SMBunlink); (gdb) n 2652 } (gdb) n switch_message (type=6 '\006', req=0x802974520, size=68) at smbd/process.c:1487 1487 return req->conn; (gdb) list 1482 reply_doserror(req, ERRSRV, ERRaccess); 1483 return conn; 1484 } 1485 1486 smb_messages[type].fn(req); 1487 return req->conn; 1488 } 1489 1490 /**************************************************************************** 1491 Construct a reply to the incoming packet. (gdb) print req->conn $173 = (connection_struct *) 0x802927050 (gdb) print *(req->conn) $174 = {next = 0x0, prev = 0x0, cnum = 1, params = 0x8029023f0, force_user = false, vuid_cache = {next_entry = 1, array = {{ server_info = 0x80298b350, vuid = 100, read_only = false, admin_user = false}, {server_info = 0x0, vuid = 0, read_only = false, admin_user = false} }}, dirptr = 0x0, printer = false, ipc = false, read_only = false, admin_user = false, dirpath = 0xb964fb "", connectpath = 0x80290b2e0 "/var/samba/exports/smbtorture/meddy/smbtorture", origpath = 0x80290b310 "/var/samba/exports/smbtorture/meddy/smbtorture", vfs = {ops = {connect_fn = 0x802a211b0 , disconnect = 0x802a21620 , disk_free = 0x547880 , get_quota = 0x5478e0 , set_quota = 0x547910 , get_shadow_copy_data = 0x547940 , statvfs = 0x547970 , fs_capabilities = 0x5479a0 , opendir = 0x5479b0 , readdir = 0x547ae0 , seekdir = 0x547bb0 , telldir = 0x547c80 , rewind_dir = 0x547d50 , mkdir = 0x547e10 , rmdir = 0x547fb0 , closedir = 0x548080 , open = 0x548150 , close_fn = 0x548230 , vfs_read = 0x548300 , pread = 0x548410 , write = 0x548570 , ---Type to continue, or q to quit--- pwrite = 0x548680 , lseek = 0x5487d0 , sendfile = 0x5488f0 , recvfile = 0x548a10 , rename = 0x548d30 , fsync = 0x548e20 , stat = 0x548ef0 , fstat = 0x548fc0 , lstat = 0x549090 , unlink = 0x549160 , chmod = 0x549230 , fchmod = 0x5493a0 , chown = 0x549510 , fchown = 0x5495e0 , lchown = 0x5496c0 , chdir = 0x549790 , getwd = 0x549860 , ntimes = 0x549930 , ftruncate = 0x549d90 , lock = 0x54a110 , kernel_flock = 0x54a200 , linux_setlease = 0x54a3e0 , getlock = 0x54a2e0 , symlink = 0x54a4b0 , vfs_readlink = 0x54a580 , link = 0x54a660 , mknod = 0x54a730 , realpath = 0x54a810 , notify_watch = 0x54a8f0 , chflags = 0x54a920 , file_id_create = 0x802a21730 , streaminfo = 0x54a990 , get_real_filename = 0x54abc0 , fget_nt_acl = 0x54ac10 , get_nt_acl = 0x54acf0 , ---Type to continue, or q to quit--- fset_nt_acl = 0x54add0 , chmod_acl = 0x54aeb0 , fchmod_acl = 0x54af90 , sys_acl_get_entry = 0x54b060 , sys_acl_get_tag_type = 0x54b090 , sys_acl_get_permset = 0x54b0c0 , sys_acl_get_qualifier = 0x54b0f0 , sys_acl_get_file = 0x54b110 , sys_acl_get_fd = 0x54b140 , sys_acl_clear_perms = 0x54b160 , sys_acl_add_perm = 0x54b180 , sys_acl_to_text = 0x54b1b0 , sys_acl_init = 0x54b1e0 , sys_acl_create_entry = 0x54b200 , sys_acl_set_tag_type = 0x54b230 , sys_acl_set_qualifier = 0x54b260 , sys_acl_set_permset = 0x54b290 , sys_acl_valid = 0x54b2c0 , sys_acl_set_file = 0x54b2e0 , sys_acl_set_fd = 0x54b310 , sys_acl_delete_def_file = 0x54b340 , sys_acl_get_perm = 0x54b360 , sys_acl_free_text = 0x54b390 , sys_acl_free_acl = 0x54b3b0 , sys_acl_free_qualifier = 0x54b3d0 , getxattr = 0x54b400 , ---Type to continue, or q to quit--- lgetxattr = 0x54b440 , fgetxattr = 0x54b480 , listxattr = 0x54b4c0 , llistxattr = 0x54b4f0 , flistxattr = 0x54b520 , removexattr = 0x54b560 , lremovexattr = 0x54b590 , fremovexattr = 0x54b5c0 , setxattr = 0x54b5f0 , lsetxattr = 0x54b630 , fsetxattr = 0x54b670 , aio_read = 0x54b6c0 , aio_write = 0x54b6e0 , aio_return_fn = 0x54b700 , aio_cancel = 0x54b720 , aio_error_fn = 0x54b750 , aio_fsync = 0x54b770 , aio_suspend = 0x54b7a0 , aio_force = 0x54b7d0 , is_offline = 0x54b7f0 , set_offline = 0x54b8d0 }, handles = { connect_hnd = 0x802939850, disconnect = 0x802939850, disk_free = 0x802939050, get_quota = 0x802939050, set_quota = 0x802939050, get_shadow_copy_data = 0x802939050, statvfs = 0x802939050, fs_capabilities = 0x802939050, opendir = 0x802939050, readdir = 0x802939050, seekdir = 0x802939050, ---Type to continue, or q to quit--- telldir = 0x802939050, rewind_dir = 0x802939050, mkdir = 0x802939050, rmdir = 0x802939050, closedir = 0x802939050, open = 0x802939050, close_hnd = 0x802939050, vfs_read = 0x802939050, pread = 0x802939050, write = 0x802939050, pwrite = 0x802939050, lseek = 0x802939050, sendfile = 0x802939050, recvfile = 0x802939050, rename = 0x802939050, fsync = 0x802939050, stat = 0x802939050, fstat = 0x802939050, lstat = 0x802939050, unlink = 0x802939050, chmod = 0x802939050, fchmod = 0x802939050, chown = 0x802939050, fchown = 0x802939050, lchown = 0x802939050, chdir = 0x802939050, getwd = 0x802939050, ntimes = 0x802939050, ftruncate = 0x802939050, lock = 0x802939050, kernel_flock = 0x802939050, linux_setlease = 0x802939050, getlock = 0x802939050, symlink = 0x802939050, vfs_readlink = 0x802939050, link = 0x802939050, mknod = 0x802939050, realpath = 0x802939050, notify_watch = 0x802939050, chflags = 0x802939050, file_id_create = 0x802939850, streaminfo = 0x802939050, get_real_filename = 0x802939050, fget_nt_acl = 0x802939050, get_nt_acl = 0x802939050, fset_nt_acl = 0x802939050, chmod_acl = 0x802939050, fchmod_acl = 0x802939050, sys_acl_get_entry = 0x802939050, sys_acl_get_tag_type = 0x802939050, sys_acl_get_permset = 0x802939050, sys_acl_get_qualifier = 0x802939050, sys_acl_get_file = 0x802939050, sys_acl_get_fd = 0x802939050, sys_acl_clear_perms = 0x802939050, sys_acl_add_perm = 0x802939050, sys_acl_to_text = 0x802939050, sys_acl_init = 0x802939050, sys_acl_create_entry = 0x802939050, sys_acl_set_tag_type = 0x802939050, sys_acl_set_qualifier = 0x802939050, sys_acl_set_permset = 0x802939050, sys_acl_valid = 0x802939050, ---Type to continue, or q to quit--- sys_acl_set_file = 0x802939050, sys_acl_set_fd = 0x802939050, sys_acl_delete_def_file = 0x802939050, sys_acl_get_perm = 0x802939050, sys_acl_free_text = 0x802939050, sys_acl_free_acl = 0x802939050, sys_acl_free_qualifier = 0x802939050, getxattr = 0x802939050, lgetxattr = 0x802939050, fgetxattr = 0x802939050, listxattr = 0x802939050, llistxattr = 0x802939050, flistxattr = 0x802939050, removexattr = 0x802939050, lremovexattr = 0x802939050, fremovexattr = 0x802939050, setxattr = 0x802939050, lsetxattr = 0x802939050, fsetxattr = 0x802939050, aio_read = 0x802939050, aio_write = 0x802939050, aio_return = 0x802939050, aio_cancel = 0x802939050, aio_error = 0x802939050, aio_fsync = 0x802939050, aio_suspend = 0x802939050, aio_force = 0x802939050, is_offline = 0x802939050, set_offline = 0x802939050}}, vfs_opaque = {ops = { connect_fn = 0x547850 , disconnect = 0x547870 , disk_free = 0x547880 , get_quota = 0x5478e0 , set_quota = 0x547910 , get_shadow_copy_data = 0x547940 , statvfs = 0x547970 , fs_capabilities = 0x5479a0 , opendir = 0x5479b0 , readdir = 0x547ae0 , seekdir = 0x547bb0 , ---Type to continue, or q to quit--- telldir = 0x547c80 , rewind_dir = 0x547d50 , mkdir = 0x547e10 , rmdir = 0x547fb0 , closedir = 0x548080 , open = 0x548150 , close_fn = 0x548230 , vfs_read = 0x548300 , pread = 0x548410 , write = 0x548570 , pwrite = 0x548680 , lseek = 0x5487d0 , sendfile = 0x5488f0 , recvfile = 0x548a10 , rename = 0x548d30 , fsync = 0x548e20 , stat = 0x548ef0 , fstat = 0x548fc0 , lstat = 0x549090 , unlink = 0x549160 , chmod = 0x549230 , fchmod = 0x5493a0 , chown = 0x549510 , fchown = 0x5495e0 , lchown = 0x5496c0 , chdir = 0x549790 , getwd = 0x549860 , ntimes = 0x549930 , ftruncate = 0x549d90 , lock = 0x54a110 , kernel_flock = 0x54a200 , linux_setlease = 0x54a3e0 , getlock = 0x54a2e0 , symlink = 0x54a4b0 , vfs_readlink = 0x54a580 , link = 0x54a660 , mknod = 0x54a730 , realpath = 0x54a810 , notify_watch = 0x54a8f0 , ---Type to continue, or q to quit--- chflags = 0x54a920 , file_id_create = 0x802a21730 , streaminfo = 0x54a990 , get_real_filename = 0x54abc0 , fget_nt_acl = 0x54ac10 , get_nt_acl = 0x54acf0 , fset_nt_acl = 0x54add0 , chmod_acl = 0x54aeb0 , fchmod_acl = 0x54af90 , sys_acl_get_entry = 0x54b060 , sys_acl_get_tag_type = 0x54b090 , sys_acl_get_permset = 0x54b0c0 , sys_acl_get_qualifier = 0x54b0f0 , sys_acl_get_file = 0x54b110 , sys_acl_get_fd = 0x54b140 , sys_acl_clear_perms = 0x54b160 , sys_acl_add_perm = 0x54b180 , sys_acl_to_text = 0x54b1b0 , sys_acl_init = 0x54b1e0 , sys_acl_create_entry = 0x54b200 , sys_acl_set_tag_type = 0x54b230 , sys_acl_set_qualifier = 0x54b260 , sys_acl_set_permset = 0x54b290 , sys_acl_valid = 0x54b2c0 , sys_acl_set_file = 0x54b2e0 , sys_acl_set_fd = 0x54b310 , ---Type to continue, or q to quit--- sys_acl_delete_def_file = 0x54b340 , sys_acl_get_perm = 0x54b360 , sys_acl_free_text = 0x54b390 , sys_acl_free_acl = 0x54b3b0 , sys_acl_free_qualifier = 0x54b3d0 , getxattr = 0x54b400 , lgetxattr = 0x54b440 , fgetxattr = 0x54b480 , listxattr = 0x54b4c0 , llistxattr = 0x54b4f0 , flistxattr = 0x54b520 , removexattr = 0x54b560 , lremovexattr = 0x54b590 , fremovexattr = 0x54b5c0 , setxattr = 0x54b5f0 , lsetxattr = 0x54b630 , fsetxattr = 0x54b670 , aio_read = 0x54b6c0 , aio_write = 0x54b6e0 , aio_return_fn = 0x54b700 , aio_cancel = 0x54b720 , aio_error_fn = 0x54b750 , aio_fsync = 0x54b770 , aio_suspend = 0x54b7a0 , aio_force = 0x54b7d0 , is_offline = 0x54b7f0 , ---Type to continue, or q to quit--- set_offline = 0x54b8d0 }, handles = { connect_hnd = 0x802939050, disconnect = 0x802939050, disk_free = 0x802939050, get_quota = 0x802939050, set_quota = 0x802939050, get_shadow_copy_data = 0x802939050, statvfs = 0x802939050, fs_capabilities = 0x802939050, opendir = 0x802939050, readdir = 0x802939050, seekdir = 0x802939050, telldir = 0x802939050, rewind_dir = 0x802939050, mkdir = 0x802939050, rmdir = 0x802939050, closedir = 0x802939050, open = 0x802939050, close_hnd = 0x802939050, vfs_read = 0x802939050, pread = 0x802939050, write = 0x802939050, pwrite = 0x802939050, lseek = 0x802939050, sendfile = 0x802939050, recvfile = 0x802939050, rename = 0x802939050, fsync = 0x802939050, stat = 0x802939050, fstat = 0x802939050, lstat = 0x802939050, unlink = 0x802939050, chmod = 0x802939050, fchmod = 0x802939050, chown = 0x802939050, fchown = 0x802939050, lchown = 0x802939050, chdir = 0x802939050, getwd = 0x802939050, ntimes = 0x802939050, ftruncate = 0x802939050, lock = 0x802939050, kernel_flock = 0x802939050, linux_setlease = 0x802939050, getlock = 0x802939050, symlink = 0x802939050, vfs_readlink = 0x802939050, link = 0x802939050, mknod = 0x802939050, realpath = 0x802939050, notify_watch = 0x802939050, chflags = 0x802939050, file_id_create = 0x802939850, streaminfo = 0x802939050, get_real_filename = 0x802939050, fget_nt_acl = 0x802939050, get_nt_acl = 0x802939050, fset_nt_acl = 0x802939050, chmod_acl = 0x802939050, fchmod_acl = 0x802939050, sys_acl_get_entry = 0x802939050, sys_acl_get_tag_type = 0x802939050, sys_acl_get_permset = 0x802939050, ---Type to continue, or q to quit--- sys_acl_get_qualifier = 0x802939050, sys_acl_get_file = 0x802939050, sys_acl_get_fd = 0x802939050, sys_acl_clear_perms = 0x802939050, sys_acl_add_perm = 0x802939050, sys_acl_to_text = 0x802939050, sys_acl_init = 0x802939050, sys_acl_create_entry = 0x802939050, sys_acl_set_tag_type = 0x802939050, sys_acl_set_qualifier = 0x802939050, sys_acl_set_permset = 0x802939050, sys_acl_valid = 0x802939050, sys_acl_set_file = 0x802939050, sys_acl_set_fd = 0x802939050, sys_acl_delete_def_file = 0x802939050, sys_acl_get_perm = 0x802939050, sys_acl_free_text = 0x802939050, sys_acl_free_acl = 0x802939050, sys_acl_free_qualifier = 0x802939050, getxattr = 0x802939050, lgetxattr = 0x802939050, fgetxattr = 0x802939050, listxattr = 0x802939050, llistxattr = 0x802939050, flistxattr = 0x802939050, removexattr = 0x802939050, lremovexattr = 0x802939050, fremovexattr = 0x802939050, setxattr = 0x802939050, lsetxattr = 0x802939050, fsetxattr = 0x802939050, aio_read = 0x802939050, aio_write = 0x802939050, aio_return = 0x802939050, aio_cancel = 0x802939050, aio_error = 0x802939050, aio_fsync = 0x802939050, aio_suspend = 0x802939050, aio_force = 0x802939050, is_offline = 0x802939050, set_offline = 0x802939050}}, vfs_handles = 0x802939850, server_info = 0x80298b350, force_group_gid = 4294967295, client_address = "10.0.8.115\000", 'ñ' , vuid = 100, lastused = 1250703882, lastused_count = 1250703884, used = true, num_files_open = 0, num_smb_operations = 1584485, encrypt_level = 2, encrypted_tid = false, case_sensitive = false, case_preserve = true, ---Type to continue, or q to quit--- short_case_preserve = true, fs_capabilities = 3, hide_list = 0x0, veto_list = 0x0, veto_oplock_list = 0x0, aio_write_behind_list = 0x0, dfree_info = 0x0, pending_trans = 0x0, notify_ctx = 0x802905070} (gdb) n 1488 } (gdb) n construct_reply (inbuf=0x802974480 "", size=68, unread_bytes=0, encrypted=false) at smbd/process.c:1511 1511 if (req->unread_bytes) { (gdb) list 1506 } 1507 init_smb_request(req, (uint8 *)inbuf, unread_bytes, encrypted); 1508 1509 conn = switch_message(type, req, size); 1510 1511 if (req->unread_bytes) { 1512 /* writeX failed. drain socket. */ 1513 if (drain_socket(smbd_server_fd(), req->unread_bytes) != 1514 req->unread_bytes) { 1515 smb_panic("failed to drain pending bytes"); (gdb) n 1520 if (req->outbuf == NULL) { (gdb) print req->outbuf $175 = (unsigned char *) 0x0 (gdb) n 1537 } (gdb) n process_smb (inbuf=0x802974480 "", nread=68, unread_bytes=0, encrypted=false) at smbd/process.c:1568 1568 trans_num++; (gdb) list 1563 1564 show_msg(inbuf); 1565 1566 construct_reply(inbuf,nread,unread_bytes,encrypted); 1567 1568 trans_num++; 1569 } 1570 1571 /**************************************************************************** 1572 Return a string containing the function name of a SMB command. (gdb) n 1569 } (gdb) n smbd_process () at smbd/process.c:1936 1936 TALLOC_FREE(inbuf); (gdb) list 1931 return; 1932 } 1933 1934 process_smb(inbuf, inbuf_len, unread_bytes, encrypted); 1935 1936 TALLOC_FREE(inbuf); 1937 1938 num_smbs++; 1939 1940 /* The timeout_processing function isn't run nearly (gdb) n 1938 num_smbs++; (gdb) n 1947 if ((num_smbs % 50) == 0 && need_to_check_log_size()) { (gdb) n 1951 TALLOC_FREE(frame); (gdb) n 1952 } (gdb) n 1915 char *inbuf = NULL; (gdb) list 1910 1911 max_recv = MIN(lp_maxxmit(),BUFFER_SIZE); 1912 1913 while (True) { 1914 NTSTATUS status; 1915 char *inbuf = NULL; 1916 size_t inbuf_len = 0; 1917 bool encrypted = false; 1918 TALLOC_CTX *frame = talloc_stackframe_pool(8192); 1919 (gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004c8d85 in reply_unlink at smbd/reply.c:2590 breakpoint already hit 2 times (gdb) delete 1 (gdb) info break No breakpoints or watchpoints. (gdb) cont Continuing.