浏览代码

smb_fread: buf can be NULL in order to skip bytes

Thomas Guillem 9 年之前
父节点
当前提交
df634ef90d
共有 2 个文件被更改,包括 4 次插入3 次删除
  1. 1 1
      include/bdsm/smb_file.h
  2. 3 2
      src/smb_file.c

+ 1 - 1
include/bdsm/smb_file.h

@@ -75,7 +75,7 @@ void      smb_fclose(smb_session *s, smb_fd fd);
  *
  * @param[in] s The session object
  * @param[in] fd [description]
- * @param[out] buf [description]
+ * @param[out] buf can be NULL in order to skip buf_size bytes
  * @param[in] buf_size [description]
  * @return The number of bytes read or -1 in case of error.
  */

+ 3 - 2
src/smb_file.c

@@ -183,7 +183,7 @@ ssize_t   smb_fread(smb_session *s, smb_fd fd, void *buf, size_t buf_size)
     size_t          max_read;
     int             res;
 
-    assert(s != NULL && buf != NULL);
+    assert(s != NULL);
 
     if ((file = smb_session_file_get(s, fd)) == NULL)
         return -1;
@@ -219,7 +219,8 @@ ssize_t   smb_fread(smb_session *s, smb_fd fd, void *buf, size_t buf_size)
         return -1;
 
     resp = (smb_read_resp *)resp_msg.packet->payload;
-    memcpy(buf, (char *)resp_msg.packet + resp->data_offset, resp->data_len);
+    if (buf)
+        memcpy(buf, (char *)resp_msg.packet + resp->data_offset, resp->data_len);
     smb_fseek(s, fd, resp->data_len, SEEK_CUR);
 
     return resp->data_len;