socklen_t length = sizeof(sa);
static char addr_buf[INET6_ADDRSTRLEN];
- addr_buf[0] = '\0';
+ /* Ok, returning a hard coded IPv4 address
+ * is bogus, but it's just as bogus as a
+ * zero IPv6 address. No good choice here.
+ */
+
+ safe_strcpy(addr_buf, "0.0.0.0", sizeof(addr_buf)-1);
if (fd == -1) {
return addr_buf;
return False;
}
- if (srv_encryption_on()) {
- NTSTATUS status = srv_decrypt_buffer(buffer);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("receive_smb: SMB decryption failed "
- "on incoming packet! Error %s\n",
- nt_errstr(status) ));
- if (smb_read_error == 0) {
- smb_read_error = READ_BAD_DECRYPT;
- }
- return False;
- }
- }
-
/* Check the incoming SMB signature. */
if (!srv_check_sign_mac(buffer, True)) {
DEBUG(0, ("receive_smb: SMB Signature verification "
return -1;
}
- if (srv_encryption_on()) {
- NTSTATUS status = srv_decrypt_buffer(*buffer);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("receive_smb: SMB decryption failed on "
- "incoming packet! Error %s\n",
- nt_errstr(status) ));
- if (smb_read_error == 0) {
- smb_read_error = READ_BAD_DECRYPT;
- }
- return -1;
- }
- }
-
/* Check the incoming SMB signature. */
if (!srv_check_sign_mac(*buffer, True)) {
DEBUG(0, ("receive_smb: SMB Signature verification failed on "
size_t len;
size_t nwritten=0;
ssize_t ret;
- char *buf_out = buffer;
/* Sign the outgoing packet if required. */
- srv_calculate_sign_mac(buf_out);
-
- if (srv_encryption_on()) {
- NTSTATUS status = srv_encrypt_buffer(buffer, &buf_out);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("send_smb: SMB encryption failed "
- "on outgoing packet! Error %s\n",
- nt_errstr(status) ));
- return False;
- }
- }
+ srv_calculate_sign_mac(buffer);
- len = smb_len(buf_out) + 4;
+ len = smb_len(buffer) + 4;
while (nwritten < len) {
- ret = write_data(fd,buf_out+nwritten,len - nwritten);
+ ret = write_data(fd,buffer+nwritten,len - nwritten);
if (ret <= 0) {
DEBUG(0,("Error writing %d bytes to client. %d. (%s)\n",
(int)len,(int)ret, strerror(errno) ));
- srv_free_enc_buffer(buf_out);
return False;
}
nwritten += ret;
}
- srv_free_enc_buffer(buf_out);
return True;
}