From 8cf78ff55312768d0b454b1d7e0560e04e6296da Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 30 Apr 2009 15:26:43 -0700 Subject: Get medieval on our ass about SMB1 file descriptors being 16 bits, not an int. Convert all uses of cli_open(), cli_nt_createXXX to NTSTATUS versions. This is smaller than it looks, it just fixes a lot of old code. Next up, ensure all cli_XX functions return NTSTATUS. Jeremy. --- source3/libsmb/libsmb_file.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'source3/libsmb/libsmb_file.c') diff --git a/source3/libsmb/libsmb_file.c b/source3/libsmb/libsmb_file.c index aa02807092..4724658fe3 100644 --- a/source3/libsmb/libsmb_file.c +++ b/source3/libsmb/libsmb_file.c @@ -47,7 +47,8 @@ SMBC_open_ctx(SMBCCTX *context, struct cli_state *targetcli = NULL; SMBCSRV *srv = NULL; SMBCFILE *file = NULL; - int fd; + uint16_t fd; + NTSTATUS status = NT_STATUS_OBJECT_PATH_INVALID; TALLOC_CTX *frame = talloc_stackframe(); if (!context || !context->internal->initialized) { @@ -102,7 +103,7 @@ SMBC_open_ctx(SMBCCTX *context, /* Hmmm, the test for a directory is suspect here ... FIXME */ if (strlen(path) > 0 && path[strlen(path) - 1] == '\\') { - fd = -1; + status = NT_STATUS_OBJECT_PATH_INVALID; } else { file = SMB_MALLOC_P(SMBCFILE); @@ -126,8 +127,9 @@ SMBC_open_ctx(SMBCCTX *context, } /*d_printf(">>>open: resolved %s as %s\n", path, targetpath);*/ - if ((fd = cli_open(targetcli, targetpath, flags, - context->internal->share_mode)) < 0) { + status = cli_open(targetcli, targetpath, flags, + context->internal->share_mode, &fd); + if (!NT_STATUS_IS_OK(status)) { /* Handle the error ... */ @@ -186,7 +188,7 @@ SMBC_open_ctx(SMBCCTX *context, /* Check if opendir needed ... */ - if (fd == -1) { + if (!NT_STATUS_IS_OK(status)) { int eno = 0; eno = SMBC_errno(context, srv->cli); @@ -627,7 +629,7 @@ SMBC_setatr(SMBCCTX * context, SMBCSRV *srv, char *path, time_t change_time, uint16 mode) { - int fd; + uint16_t fd; int ret; TALLOC_CTX *frame = talloc_stackframe(); @@ -659,7 +661,7 @@ SMBC_setatr(SMBCCTX * context, SMBCSRV *srv, char *path, srv->no_pathinfo = True; /* Open the file */ - if ((fd = cli_open(srv->cli, path, O_RDWR, DENY_NONE)) < 0) { + if (!NT_STATUS_IS_OK(cli_open(srv->cli, path, O_RDWR, DENY_NONE, &fd))) { errno = SMBC_errno(context, srv->cli); TALLOC_FREE(frame); -- cgit