1diff -r jcifs_1.3.15/src/jcifs/smb/SecurityDescriptor.java jcifs/src/jcifs/smb/SecurityDescriptor.java 224a25 3> SID owner_user, owner_group; 440c41 5< ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to owner sid 6--- 7> int ownerUOffset = ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to owner sid 842c43 9< ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to group sid 10--- 11> int ownerGOffset = ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to group sid 1244c45 13< ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to sacl 14--- 15> int saclOffset = ServerMessageBlock.readInt4(buffer, bufferIndex); // offset to sacl 1648c49,53 17< bufferIndex = start + daclOffset; 18--- 19> if (ownerUOffset > 0) { 20> bufferIndex = start + ownerUOffset; 21> owner_user = new SID(buffer, bufferIndex); 22> bufferIndex += 28; // ??? 23> } 2450,55c55,59 25< bufferIndex++; // revision 26< bufferIndex++; 27< int size = ServerMessageBlock.readInt2(buffer, bufferIndex); 28< bufferIndex += 2; 29< int numAces = ServerMessageBlock.readInt4(buffer, bufferIndex); 30< bufferIndex += 4; 31--- 32> if (ownerGOffset > 0) { 33> bufferIndex = start + ownerGOffset; 34> owner_group = new SID(buffer, bufferIndex); 35> bufferIndex += 28; // ??? 36> } 3757,58c61 38< if (numAces > 4096) 39< throw new IOException( "Invalid SecurityDescriptor" ); 40--- 41> bufferIndex = start + daclOffset; 4260a64,73 43> bufferIndex++; // revision 44> bufferIndex++; 45> int size = ServerMessageBlock.readInt2(buffer, bufferIndex); 46> bufferIndex += 2; 47> int numAces = ServerMessageBlock.readInt4(buffer, bufferIndex); 48> bufferIndex += 4; 49> 50> if (numAces > 4096) 51> throw new IOException( "Invalid SecurityDescriptor" ); 52> 53diff -r jcifs_1.3.15/src/jcifs/smb/SmbFile.java jcifs/src/jcifs/smb/SmbFile.java 542966a2967,2998 55> public SID getOwnerUser() throws IOException { 56> 57> int f = open0(O_RDONLY, READ_CONTROL, 0, isDirectory() ? 1 : 0); 58> 59> /* 60> * NtTrans Query Security Desc Request / Response 61> */ 62> 63> NtTransQuerySecurityDesc request = new NtTransQuerySecurityDesc(f, 0x01); 64> NtTransQuerySecurityDescResponse response = new NtTransQuerySecurityDescResponse(); 65> send(request, response); 66> 67> close(f, 0L); 68> return response.securityDescriptor.owner_user; 69> } 70> 71> public SID getOwnerGroup() throws IOException { 72> 73> int f = open0(O_RDONLY, READ_CONTROL, 0, isDirectory() ? 1 : 0); 74> 75> /* 76> * NtTrans Query Security Desc Request / Response 77> */ 78> 79> NtTransQuerySecurityDesc request = new NtTransQuerySecurityDesc(f, 0x02); 80> NtTransQuerySecurityDescResponse response = new NtTransQuerySecurityDescResponse(); 81> send(request, response); 82> 83> close(f, 0L); 84> return response.securityDescriptor.owner_group; 85> } 86> 87