Changeset 733 for branches/samba-3.5.x/source3/lib
- Timestamp:
- Nov 12, 2012, 5:09:31 PM (13 years ago)
- Location:
- branches/samba-3.5.x/source3/lib
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.5.x/source3/lib/ctdbd_conn.c
r429 r733 1132 1132 struct ctdbd_traverse_state state; 1133 1133 1134 become_root(); 1134 1135 status = ctdbd_init_connection(NULL, &conn); 1136 unbecome_root(); 1135 1137 if (!NT_STATUS_IS_OK(status)) { 1136 1138 DEBUG(0, ("ctdbd_init_connection failed: %s\n", -
branches/samba-3.5.x/source3/lib/recvfile.c
r664 r733 33 33 * as we're below the Samba vfs layer. 34 34 * 35 * If tofd is -1 we just drain the incoming socket of count36 * bytes without writing to the outgoing fd.37 * If a write fails we do the same (to cope with disk full)38 * errors.39 *40 35 * Returns -1 on short reads from fromfd (read error) 41 36 * and sets errno. 42 37 * 43 38 * Returns number of bytes written to 'tofd' 44 * or thrown away if 'tofd == -1'.45 39 * return != count then sets errno. 46 40 * Returns count if complete success. … … 99 93 num_written = 0; 100 94 101 while (num_written < read_ret) { 95 /* Don't write any more after a write error. */ 96 while (tofd != -1 && (num_written < read_ret)) { 102 97 ssize_t write_ret; 103 98 104 if (tofd == -1) { 105 write_ret = read_ret; 106 } else { 107 /* Write to file - ignore EINTR. */ 108 write_ret = sys_write(tofd, 109 buffer + num_written, 110 read_ret - num_written); 111 112 if (write_ret <= 0) { 113 /* write error - stop writing. */ 114 tofd = -1; 115 saved_errno = errno; 116 continue; 117 } 99 /* Write to file - ignore EINTR. */ 100 write_ret = sys_write(tofd, 101 buffer + num_written, 102 read_ret - num_written); 103 104 if (write_ret <= 0) { 105 /* write error - stop writing. */ 106 tofd = -1; 107 if (total_written == 0) { 108 /* Ensure we return 109 -1 if the first 110 write failed. */ 111 total_written = -1; 112 } 113 saved_errno = errno; 114 break; 118 115 } 119 116 … … 217 214 218 215 done: 219 if ( total_written <count) {216 if (count) { 220 217 int saved_errno = errno; 221 if (drain_socket(fromfd, count-total_written) != 222 count-total_written) { 218 if (drain_socket(fromfd, count) != count) { 223 219 /* socket is dead. */ 224 220 return -1; … … 246 242 /***************************************************************** 247 243 Throw away "count" bytes from the client socket. 244 Returns count or -1 on error. 248 245 *****************************************************************/ 249 246 250 247 ssize_t drain_socket(int sockfd, size_t count) 251 248 { 252 return default_sys_recvfile(sockfd, -1, (SMB_OFF_T)-1, count); 253 } 249 size_t total = 0; 250 size_t bufsize = MIN(TRANSFER_BUF_SIZE,count); 251 char *buffer = NULL; 252 253 if (count == 0) { 254 return 0; 255 } 256 257 buffer = SMB_MALLOC_ARRAY(char, bufsize); 258 if (buffer == NULL) { 259 return -1; 260 } 261 262 while (total < count) { 263 ssize_t read_ret; 264 size_t toread = MIN(bufsize,count - total); 265 266 /* Read from socket - ignore EINTR. */ 267 read_ret = sys_read(sockfd, buffer, toread); 268 if (read_ret <= 0) { 269 /* EOF or socket error. */ 270 free(buffer); 271 return -1; 272 } 273 total += read_ret; 274 } 275 276 free(buffer); 277 return count; 278 } -
branches/samba-3.5.x/source3/lib/util_seaccess.c
r599 r733 159 159 int i; 160 160 uint32_t bits_remaining; 161 uint32_t explicitly_denied_bits = 0; 161 162 162 163 *access_granted = access_desired; … … 224 225 case SEC_ACE_TYPE_ACCESS_DENIED: 225 226 case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT: 226 if (bits_remaining & ace->access_mask) { 227 return NT_STATUS_ACCESS_DENIED; 228 } 227 explicitly_denied_bits |= (bits_remaining & ace->access_mask); 229 228 break; 230 229 default: /* Other ACE types not handled/supported */ … … 232 231 } 233 232 } 233 234 bits_remaining |= explicitly_denied_bits; 234 235 235 236 done:
Note:
See TracChangeset
for help on using the changeset viewer.