Coverage Report

Created: 2025-07-23 07:04

/src/samba/source4/libcli/climessage.c
Line
Count
Source (jump to first uncovered line)
1
/* 
2
   Unix SMB/CIFS implementation.
3
   client message handling routines
4
   Copyright (C) Andrew Tridgell 1994-1998
5
   Copyright (C) James J Myers 2003  <myersjj@samba.org>
6
   
7
   This program is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 3 of the License, or
10
   (at your option) any later version.
11
   
12
   This program is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   GNU General Public License for more details.
16
   
17
   You should have received a copy of the GNU General Public License
18
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
*/
20
21
#include "includes.h"
22
#include "libcli/raw/libcliraw.h"
23
#include "libcli/raw/raw_proto.h"
24
#include "libcli/libcli.h"
25
26
27
/****************************************************************************
28
start a message sequence
29
****************************************************************************/
30
bool smbcli_message_start(struct smbcli_tree *tree, const char *host, const char *username, 
31
           int *grp)
32
0
{
33
0
  struct smbcli_request *req; 
34
  
35
0
  req = smbcli_request_setup(tree, SMBsendstrt, 0, 0);
36
0
  if (req == NULL) {
37
0
    return false;
38
0
  }
39
0
  smbcli_req_append_string(req, username, STR_TERMINATE);
40
0
  smbcli_req_append_string(req, host, STR_TERMINATE);
41
0
  if (!smbcli_request_send(req) || 
42
0
      !smbcli_request_receive(req) ||
43
0
      smbcli_is_error(tree)) {
44
0
    smbcli_request_destroy(req);
45
0
    return false;
46
0
  }
47
48
0
  *grp = SVAL(req->in.vwv, VWV(0));
49
0
  smbcli_request_destroy(req);
50
51
0
  return true;
52
0
}
53
54
55
/****************************************************************************
56
send a message 
57
****************************************************************************/
58
bool smbcli_message_text(struct smbcli_tree *tree, char *msg, int len, int grp)
59
0
{
60
0
  struct smbcli_request *req; 
61
  
62
0
  req = smbcli_request_setup(tree, SMBsendtxt, 1, 0);
63
0
  if (req == NULL) {
64
0
    return false;
65
0
  }
66
0
  SSVAL(req->out.vwv, VWV(0), grp);
67
68
0
  smbcli_req_append_bytes(req, (const uint8_t *)msg, len);
69
70
0
  if (!smbcli_request_send(req) || 
71
0
      !smbcli_request_receive(req) ||
72
0
      smbcli_is_error(tree)) {
73
0
    smbcli_request_destroy(req);
74
0
    return false;
75
0
  }
76
77
0
  smbcli_request_destroy(req);
78
0
  return true;
79
0
}      
80
81
/****************************************************************************
82
end a message 
83
****************************************************************************/
84
bool smbcli_message_end(struct smbcli_tree *tree, int grp)
85
0
{
86
0
  struct smbcli_request *req; 
87
  
88
0
  req = smbcli_request_setup(tree, SMBsendend, 1, 0);
89
0
  if (req == NULL) {
90
0
    return false;
91
0
  }
92
0
  SSVAL(req->out.vwv, VWV(0), grp);
93
94
0
  if (!smbcli_request_send(req) || 
95
0
      !smbcli_request_receive(req) ||
96
0
      smbcli_is_error(tree)) {
97
0
    smbcli_request_destroy(req);
98
0
    return false;
99
0
  }
100
101
0
  smbcli_request_destroy(req);
102
0
  return true;
103
0
}      
104