diff options
Diffstat (limited to 'source/smbd/dosmode.c')
-rw-r--r-- | source/smbd/dosmode.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/source/smbd/dosmode.c b/source/smbd/dosmode.c index d7b40198771..ee54417c247 100644 --- a/source/smbd/dosmode.c +++ b/source/smbd/dosmode.c @@ -196,6 +196,8 @@ int file_chmod(connection_struct *conn,char *fname,int dosmode,SMB_STRUCT_STAT * if (S_ISDIR(st->st_mode)) dosmode |= aDIR; + else + dosmode &= ~aDIR; if (dos_mode(conn,fname,st) == dosmode) return(0); @@ -280,7 +282,7 @@ int file_utime(connection_struct *conn, char *fname, struct utimbuf *times) errno = 0; - if(conn->vfs_ops.utime(conn,dos_to_unix(fname, False), times) == 0) + if(conn->vfs_ops.utime(conn,dos_to_unix_static(fname), times) == 0) return 0; if((errno != EPERM) && (errno != EACCES)) @@ -308,7 +310,7 @@ int file_utime(connection_struct *conn, char *fname, struct utimbuf *times) current_user.ngroups,current_user.groups)))) { /* We are allowed to become root and change the filetime. */ become_root(); - ret = conn->vfs_ops.utime(conn,dos_to_unix(fname, False), times); + ret = conn->vfs_ops.utime(conn,dos_to_unix_static(fname), times); unbecome_root(); } } |