diff -r jcifs_1.3.15/src/jcifs/smb/SecurityDescriptor.java jcifs/src/jcifs/smb/SecurityDescriptor.java
24a25
>     SID owner_user, owner_group;
40c41
<         ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to owner sid
---
>         int ownerUOffset = ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to owner sid
42c43
<         ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to group sid
---
>         int ownerGOffset = ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to group sid
44c45
<         ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to sacl
---
>         int saclOffset = ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to sacl
48c49,53
<         bufferIndex = start + daclOffset;
---
>         if (ownerUOffset > 0) {
>             bufferIndex = start + ownerUOffset;
>             owner_user = new SID(buffer, bufferIndex);
>             bufferIndex += 28; // ???
>         }
50,55c55,59
<         bufferIndex++; // revision
<         bufferIndex++;
<         int size = ServerMessageBlock.readInt2(buffer, bufferIndex);
<         bufferIndex += 2;
<         int numAces = ServerMessageBlock.readInt4(buffer, bufferIndex);
<         bufferIndex += 4;
---
>         if (ownerGOffset > 0) {
>             bufferIndex = start + ownerGOffset;
>             owner_group = new SID(buffer, bufferIndex);
>             bufferIndex += 28; // ???
>         }
57,58c61
<         if (numAces > 4096)
<             throw new IOException( "Invalid SecurityDescriptor" );
---
>         bufferIndex = start + daclOffset;
60a64,73
>             bufferIndex++; // revision
>             bufferIndex++;
>             int size = ServerMessageBlock.readInt2(buffer, bufferIndex);
>             bufferIndex += 2;
>             int numAces = ServerMessageBlock.readInt4(buffer, bufferIndex);
>             bufferIndex += 4;
> 
>             if (numAces > 4096)
>                 throw new IOException( "Invalid SecurityDescriptor" );
> 
diff -r jcifs_1.3.15/src/jcifs/smb/SmbFile.java jcifs/src/jcifs/smb/SmbFile.java
2966a2967,2998
>     public SID getOwnerUser() throws IOException {
> 
>         int f = open0(O_RDONLY, READ_CONTROL, 0, isDirectory() ? 1 : 0);
> 
>         /*
>          * NtTrans Query Security Desc Request / Response
>          */
> 
>         NtTransQuerySecurityDesc request = new NtTransQuerySecurityDesc(f, 0x01);
>         NtTransQuerySecurityDescResponse response = new NtTransQuerySecurityDescResponse();
>         send(request, response);
> 
>         close(f, 0L);
>         return response.securityDescriptor.owner_user;
>     }
> 
>     public SID getOwnerGroup() throws IOException {
> 
>         int f = open0(O_RDONLY, READ_CONTROL, 0, isDirectory() ? 1 : 0);
> 
>         /*
>          * NtTrans Query Security Desc Request / Response
>          */
> 
>         NtTransQuerySecurityDesc request = new NtTransQuerySecurityDesc(f, 0x02);
>         NtTransQuerySecurityDescResponse response = new NtTransQuerySecurityDescResponse();
>         send(request, response);
> 
>         close(f, 0L);
>         return response.securityDescriptor.owner_group;
>     }
> 
