• Home
  • Raw
  • Download

Lines Matching +full:- +full:- +full:short

22  * SPDX-License-Identifier: curl
99 unsigned short nbt_length;
104 unsigned short flags2;
105 unsigned short pid_high;
107 unsigned short pad;
108 unsigned short tid;
109 unsigned short pid;
110 unsigned short uid;
111 unsigned short mid;
117 unsigned short dialect_index;
119 unsigned short max_mpx_count;
120 unsigned short max_number_vcs;
127 unsigned short server_time_zone;
129 unsigned short byte_count;
136 unsigned short offset;
142 unsigned short max_buffer_size;
143 unsigned short max_mpx_count;
144 unsigned short vc_number;
146 unsigned short lengths[2];
149 unsigned short byte_count;
156 unsigned short flags;
157 unsigned short pw_len;
158 unsigned short byte_count;
166 unsigned short name_length;
177 unsigned short byte_count;
186 unsigned short fid;
201 unsigned short fid;
203 unsigned short max_bytes;
204 unsigned short min_bytes;
206 unsigned short remaining;
208 unsigned short byte_count;
215 unsigned short fid;
218 unsigned short write_mode;
219 unsigned short remaining;
220 unsigned short pad;
221 unsigned short data_length;
222 unsigned short data_offset;
224 unsigned short byte_count;
230 unsigned short fid;
232 unsigned short byte_count;
237 unsigned short byte_count;
324 /* Append a null-terminated string to an SMB message */
334 static unsigned short smb_swap16(unsigned short x) in smb_swap16()
336 return (unsigned short) ((x << 8) | ((x >> 8) & 0xff)); in smb_swap16()
373 unsigned short tid; /* Even if we connect to the same tree as another */
374 unsigned short fid; /* request, the tid will be different */
380 struct smb_conn *smbc = &data->conn->proto.smbc; in conn_state()
392 if(smbc->state != newstate) in conn_state()
394 (void *)smbc, names[smbc->state], names[newstate]); in conn_state()
397 smbc->state = newstate; in conn_state()
403 struct smb_request *req = data->req.p.smb; in request_state()
418 if(req->state != newstate) in request_state()
420 (void *)req, names[req->state], names[newstate]); in request_state()
423 req->state = newstate; in request_state()
434 data->req.p.smb = req = calloc(1, sizeof(struct smb_request)); in smb_setup_connection()
444 struct connectdata *conn = data->conn; in smb_connect()
445 struct smb_conn *smbc = &conn->proto.smbc; in smb_connect()
451 if(!data->state.aptr.user) in smb_connect()
455 smbc->state = SMB_CONNECTING; in smb_connect()
456 smbc->recv_buf = malloc(MAX_MESSAGE_SIZE); in smb_connect()
457 if(!smbc->recv_buf) in smb_connect()
464 slash = strchr(conn->user, '/'); in smb_connect()
466 slash = strchr(conn->user, '\\'); in smb_connect()
469 smbc->user = slash + 1; in smb_connect()
470 smbc->domain = strdup(conn->user); in smb_connect()
471 if(!smbc->domain) in smb_connect()
473 smbc->domain[slash - conn->user] = 0; in smb_connect()
476 smbc->user = conn->user; in smb_connect()
477 smbc->domain = strdup(conn->host.name); in smb_connect()
478 if(!smbc->domain) in smb_connect()
487 struct connectdata *conn = data->conn; in smb_recv_message()
488 curl_socket_t sockfd = conn->sock[FIRSTSOCKET]; in smb_recv_message()
489 struct smb_conn *smbc = &conn->proto.smbc; in smb_recv_message()
490 char *buf = smbc->recv_buf; in smb_recv_message()
494 size_t len = MAX_MESSAGE_SIZE - smbc->got; in smb_recv_message()
497 result = Curl_read(data, sockfd, buf + smbc->got, len, &bytes_read); in smb_recv_message()
504 smbc->got += bytes_read; in smb_recv_message()
506 /* Check for a 32-bit nbt header */ in smb_recv_message()
507 if(smbc->got < sizeof(unsigned int)) in smb_recv_message()
511 (buf + sizeof(unsigned short))) + in smb_recv_message()
513 if(smbc->got < nbt_size) in smb_recv_message()
519 msg_size += 1 + ((unsigned char) buf[msg_size]) * sizeof(unsigned short); in smb_recv_message()
520 if(nbt_size >= msg_size + sizeof(unsigned short)) { in smb_recv_message()
522 msg_size += sizeof(unsigned short) + in smb_recv_message()
536 struct smb_conn *smbc = &conn->proto.smbc; in smb_pop_message()
538 smbc->got = 0; in smb_pop_message()
544 struct connectdata *conn = data->conn; in smb_format_message()
545 struct smb_conn *smbc = &conn->proto.smbc; in smb_format_message()
546 struct smb_request *req = data->req.p.smb; in smb_format_message()
550 h->nbt_length = htons((unsigned short) (sizeof(*h) - sizeof(unsigned int) + in smb_format_message()
552 memcpy((char *)h->magic, "\xffSMB", 4); in smb_format_message()
553 h->command = cmd; in smb_format_message()
554 h->flags = SMB_FLAGS_CANONICAL_PATHNAMES | SMB_FLAGS_CASELESS_PATHNAMES; in smb_format_message()
555 h->flags2 = smb_swap16(SMB_FLAGS2_IS_LONG_NAME | SMB_FLAGS2_KNOWS_LONG_NAME); in smb_format_message()
556 h->uid = smb_swap16(smbc->uid); in smb_format_message()
557 h->tid = smb_swap16(req->tid); in smb_format_message()
559 h->pid_high = smb_swap16((unsigned short)(pid >> 16)); in smb_format_message()
560 h->pid = smb_swap16((unsigned short) pid); in smb_format_message()
566 struct connectdata *conn = data->conn; in smb_send()
567 struct smb_conn *smbc = &conn->proto.smbc; in smb_send()
571 result = Curl_nwrite(data, FIRSTSOCKET, data->state.ulbuf, in smb_send()
577 smbc->send_size = len; in smb_send()
578 smbc->sent = bytes_written; in smb_send()
581 smbc->upload_size = upload_size; in smb_send()
588 struct connectdata *conn = data->conn; in smb_flush()
589 struct smb_conn *smbc = &conn->proto.smbc; in smb_flush()
591 ssize_t len = smbc->send_size - smbc->sent; in smb_flush()
594 if(!smbc->send_size) in smb_flush()
598 data->state.ulbuf + smbc->sent, in smb_flush()
604 smbc->sent += bytes_written; in smb_flush()
606 smbc->send_size = 0; in smb_flush()
617 smb_format_message(data, (struct smb_header *)data->state.ulbuf, in smb_send_message()
619 memcpy(data->state.ulbuf + sizeof(struct smb_header), in smb_send_message()
634 struct connectdata *conn = data->conn; in smb_send_setup()
635 struct smb_conn *smbc = &conn->proto.smbc; in smb_send_setup()
644 byte_count += strlen(smbc->user) + strlen(smbc->domain); in smb_send_setup()
649 Curl_ntlm_core_mk_lm_hash(conn->passwd, lm_hash); in smb_send_setup()
650 Curl_ntlm_core_lm_resp(lm_hash, smbc->challenge, lm); in smb_send_setup()
651 Curl_ntlm_core_mk_nt_hash(conn->passwd, nt_hash); in smb_send_setup()
652 Curl_ntlm_core_lm_resp(nt_hash, smbc->challenge, nt); in smb_send_setup()
660 msg.session_key = smb_swap32(smbc->session_key); in smb_send_setup()
668 MSGCATNULL(smbc->user); in smb_send_setup()
669 MSGCATNULL(smbc->domain); in smb_send_setup()
672 byte_count = p - msg.bytes; in smb_send_setup()
673 msg.byte_count = smb_swap16((unsigned short)byte_count); in smb_send_setup()
676 sizeof(msg) - sizeof(msg.bytes) + byte_count); in smb_send_setup()
682 struct connectdata *conn = data->conn; in smb_send_tree_connect()
683 struct smb_conn *smbc = &conn->proto.smbc; in smb_send_tree_connect()
686 size_t byte_count = strlen(conn->host.name) + strlen(smbc->share); in smb_send_tree_connect()
696 MSGCAT(conn->host.name); in smb_send_tree_connect()
698 MSGCATNULL(smbc->share); in smb_send_tree_connect()
700 byte_count = p - msg.bytes; in smb_send_tree_connect()
701 msg.byte_count = smb_swap16((unsigned short)byte_count); in smb_send_tree_connect()
704 sizeof(msg) - sizeof(msg.bytes) + byte_count); in smb_send_tree_connect()
709 struct smb_request *req = data->req.p.smb; in smb_send_open()
713 if((strlen(req->path) + 1) > sizeof(msg.bytes)) in smb_send_open()
719 byte_count = strlen(req->path); in smb_send_open()
720 msg.name_length = smb_swap16((unsigned short)byte_count); in smb_send_open()
722 if(data->state.upload) { in smb_send_open()
730 msg.byte_count = smb_swap16((unsigned short) ++byte_count); in smb_send_open()
731 strcpy(msg.bytes, req->path); in smb_send_open()
734 sizeof(msg) - sizeof(msg.bytes) + byte_count); in smb_send_open()
739 struct smb_request *req = data->req.p.smb; in smb_send_close()
744 msg.fid = smb_swap16(req->fid); in smb_send_close()
760 struct smb_request *req = data->req.p.smb; in smb_send_read()
761 curl_off_t offset = data->req.offset; in smb_send_read()
767 msg.fid = smb_swap16(req->fid); in smb_send_read()
779 struct smb_request *req = data->req.p.smb; in smb_send_write()
780 curl_off_t offset = data->req.offset; in smb_send_write()
781 curl_off_t upload_size = data->req.size - data->req.bytecount; in smb_send_write()
785 msg = (struct smb_write *)data->state.ulbuf; in smb_send_write()
787 if(upload_size >= MAX_PAYLOAD_SIZE - 1) /* There is one byte of padding */ in smb_send_write()
788 upload_size = MAX_PAYLOAD_SIZE - 1; in smb_send_write()
791 msg->word_count = SMB_WC_WRITE_ANDX; in smb_send_write()
792 msg->andx.command = SMB_COM_NO_ANDX_COMMAND; in smb_send_write()
793 msg->fid = smb_swap16(req->fid); in smb_send_write()
794 msg->offset = smb_swap32((unsigned int) offset); in smb_send_write()
795 msg->offset_high = smb_swap32((unsigned int) (offset >> 32)); in smb_send_write()
796 msg->data_length = smb_swap16((unsigned short) upload_size); in smb_send_write()
797 msg->data_offset = smb_swap16(sizeof(*msg) - sizeof(unsigned int)); in smb_send_write()
798 msg->byte_count = smb_swap16((unsigned short) (upload_size + 1)); in smb_send_write()
800 smb_format_message(data, &msg->h, SMB_COM_WRITE_ANDX, in smb_send_write()
801 sizeof(*msg) - sizeof(msg->h) + (size_t) upload_size); in smb_send_write()
808 struct connectdata *conn = data->conn; in smb_send_and_recv()
809 struct smb_conn *smbc = &conn->proto.smbc; in smb_send_and_recv()
814 if(!smbc->send_size && smbc->upload_size) { in smb_send_and_recv()
815 size_t nread = smbc->upload_size > (size_t)data->set.upload_buffer_size ? in smb_send_and_recv()
816 (size_t)data->set.upload_buffer_size : smbc->upload_size; in smb_send_and_recv()
817 data->req.upload_fromhere = data->state.ulbuf; in smb_send_and_recv()
824 smbc->upload_size -= nread; in smb_send_and_recv()
825 smbc->send_size = nread; in smb_send_and_recv()
826 smbc->sent = 0; in smb_send_and_recv()
830 if(smbc->send_size) { in smb_send_and_recv()
837 if(smbc->send_size || smbc->upload_size) in smb_send_and_recv()
845 struct connectdata *conn = data->conn; in smb_connection_state()
846 struct smb_conn *smbc = &conn->proto.smbc; in smb_connection_state()
852 if(smbc->state == SMB_CONNECTING) { in smb_connection_state()
854 if((conn->handler->flags & PROTOPT_SSL)) { in smb_connection_state()
885 switch(smbc->state) { in smb_connection_state()
887 if((smbc->got < sizeof(*nrsp) + sizeof(smbc->challenge) - 1) || in smb_connection_state()
888 h->status) { in smb_connection_state()
893 memcpy(smbc->challenge, nrsp->bytes, sizeof(smbc->challenge)); in smb_connection_state()
894 smbc->session_key = smb_swap32(nrsp->session_key); in smb_connection_state()
904 if(h->status) { in smb_connection_state()
908 smbc->uid = smb_swap16(h->uid); in smb_connection_state()
929 timestamp -= 116444736000000000; in get_posix_time()
943 struct connectdata *conn = data->conn; in smb_request_state()
944 struct smb_request *req = data->req.p.smb; in smb_request_state()
946 struct smb_conn *smbc = &conn->proto.smbc; in smb_request_state()
948 unsigned short len; in smb_request_state()
949 unsigned short off; in smb_request_state()
954 if(data->state.upload && (data->state.infilesize < 0)) { in smb_request_state()
960 if(req->state == SMB_REQUESTING) { in smb_request_state()
982 switch(req->state) { in smb_request_state()
984 if(h->status) { in smb_request_state()
985 req->result = CURLE_REMOTE_FILE_NOT_FOUND; in smb_request_state()
986 if(h->status == smb_swap32(SMB_ERR_NOACCESS)) in smb_request_state()
987 req->result = CURLE_REMOTE_ACCESS_DENIED; in smb_request_state()
990 req->tid = smb_swap16(h->tid); in smb_request_state()
995 if(h->status || smbc->got < sizeof(struct smb_nt_create_response)) { in smb_request_state()
996 req->result = CURLE_REMOTE_FILE_NOT_FOUND; in smb_request_state()
997 if(h->status == smb_swap32(SMB_ERR_NOACCESS)) in smb_request_state()
998 req->result = CURLE_REMOTE_ACCESS_DENIED; in smb_request_state()
1003 req->fid = smb_swap16(smb_m->fid); in smb_request_state()
1004 data->req.offset = 0; in smb_request_state()
1005 if(data->state.upload) { in smb_request_state()
1006 data->req.size = data->state.infilesize; in smb_request_state()
1007 Curl_pgrsSetUploadSize(data, data->req.size); in smb_request_state()
1011 data->req.size = smb_swap64(smb_m->end_of_file); in smb_request_state()
1012 if(data->req.size < 0) { in smb_request_state()
1013 req->result = CURLE_WEIRD_SERVER_REPLY; in smb_request_state()
1017 Curl_pgrsSetDownloadSize(data, data->req.size); in smb_request_state()
1018 if(data->set.get_filetime) in smb_request_state()
1019 get_posix_time(&data->info.filetime, smb_m->last_change_time); in smb_request_state()
1026 if(h->status || smbc->got < sizeof(struct smb_header) + 14) { in smb_request_state()
1027 req->result = CURLE_RECV_ERROR; in smb_request_state()
1036 if(off + sizeof(unsigned int) + len > smbc->got) { in smb_request_state()
1045 req->result = result; in smb_request_state()
1050 data->req.offset += len; in smb_request_state()
1055 if(h->status || smbc->got < sizeof(struct smb_header) + 6) { in smb_request_state()
1056 req->result = CURLE_UPLOAD_FAILED; in smb_request_state()
1062 data->req.bytecount += len; in smb_request_state()
1063 data->req.offset += len; in smb_request_state()
1064 Curl_pgrsSetUploadCounter(data, data->req.bytecount); in smb_request_state()
1065 if(data->req.bytecount >= data->req.size) in smb_request_state()
1109 result = req->result; in smb_request_state()
1130 struct smb_conn *smbc = &conn->proto.smbc; in smb_disconnect()
1133 Curl_safefree(smbc->share); in smb_disconnect()
1134 Curl_safefree(smbc->domain); in smb_disconnect()
1135 Curl_safefree(smbc->recv_buf); in smb_disconnect()
1143 socks[0] = conn->sock[FIRSTSOCKET]; in smb_getsock()
1149 struct connectdata *conn = data->conn; in smb_do()
1150 struct smb_conn *smbc = &conn->proto.smbc; in smb_do()
1153 if(smbc->share) { in smb_do()
1162 struct smb_request *req = data->req.p.smb; in smb_parse_url_path()
1163 struct smb_conn *smbc = &conn->proto.smbc; in smb_parse_url_path()
1168 CURLcode result = Curl_urldecode(data->state.up.path, 0, &path, NULL, in smb_parse_url_path()
1174 smbc->share = strdup((*path == '/' || *path == '\\') ? path + 1 : path); in smb_parse_url_path()
1176 if(!smbc->share) in smb_parse_url_path()
1179 slash = strchr(smbc->share, '/'); in smb_parse_url_path()
1181 slash = strchr(smbc->share, '\\'); in smb_parse_url_path()
1185 Curl_safefree(smbc->share); in smb_parse_url_path()
1193 req->path = slash; in smb_parse_url_path()