Changeset 920 for trunk/server/source4/torture/ndr
- Timestamp:
- Jun 9, 2016, 2:23:12 PM (9 years ago)
- Location:
- trunk/server
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 919
- Property svn:mergeinfo changed
-
trunk/server/source4/torture/ndr/dfsblob.c
r918 r920 75 75 struct torture_suite *suite = torture_suite_create(ctx, "dfsblob"); 76 76 77 torture_suite_add_ndr_pull_ fn_test(suite, dfs_GetDFSReferral_in, dfs_get_ref_in, NDR_IN, NULL);77 torture_suite_add_ndr_pull_test(suite, dfs_GetDFSReferral_in, dfs_get_ref_in, NULL); 78 78 79 torture_suite_add_ndr_pull_ fn_test(suite, dfs_referral_resp, dfs_get_ref_out2, NDR_BUFFERS|NDR_SCALARS, NULL);79 torture_suite_add_ndr_pull_test(suite, dfs_referral_resp, dfs_get_ref_out2, NULL); 80 80 81 torture_suite_add_ndr_pull_ fn_test(suite, dfs_referral_resp, dfs_get_ref_out, NDR_BUFFERS|NDR_SCALARS,dfs_referral_out_check);81 torture_suite_add_ndr_pull_test(suite, dfs_referral_resp, dfs_get_ref_out,dfs_referral_out_check); 82 82 83 83 return suite; -
trunk/server/source4/torture/ndr/drsblobs.c
r918 r920 116 116 }; 117 117 118 /* these are taken from the trust objects of a w2k8r2 forest, with a 119 * trust relationship between the forest parent and a child domain 120 */ 121 static const char *trustAuthIncoming = 122 "AQAAAAwAAAAcAQAASuQ+RXJdzAECAAAAAAEAAMOWL6UVfVKiJOUsGcT03H" 123 "jHxr2ACsMMOV5ynM617Tp7idNC+c4egdqk4S9YEpvR2YvHmdZdymL6F7QKm8OkXazYZF2r/gZ/bI+" 124 "jkWbsn4O8qyAc3OUKQRZwBbf+lxBW+vM4O3ZpUjz5BSKCcFQgM+MY91yVU8Nji3HNnvGnDquobFAZ" 125 "hxjL+S1l5+QZgkfyfv5mQScGRbU1Lar1xg9G3JznUb7S6pvrBO2nwK8g+KZBfJy5UeULigDH4IWo/" 126 "JmtaEGkKE2uiKIjdsEQd/uwnkouW26XzRc0ulfJnPFftGnT9KIcShPf7DLj/tstmQAAceRMFHJTY3" 127 "PmxoowoK8HUyBK5D5Fcl3MAQIAAAAAAQAAw5YvpRV9UqIk5SwZxPTceMfGvYAKwww5XnKczrXtOnu" 128 "J00L5zh6B2qThL1gSm9HZi8eZ1l3KYvoXtAqbw6RdrNhkXav+Bn9sj6ORZuyfg7yrIBzc5QpBFnAF" 129 "t/6XEFb68zg7dmlSPPkFIoJwVCAz4xj3XJVTw2OLcc2e8acOq6hsUBmHGMv5LWXn5BmCR/J+/mZBJ" 130 "wZFtTUtqvXGD0bcnOdRvtLqm+sE7afAryD4pkF8nLlR5QuKAMfghaj8ma1oQaQoTa6IoiN2wRB3+7" 131 "CeSi5bbpfNFzS6V8mc8V+0adP0ohxKE9/sMuP+2y2ZAABx5EwUclNjc+bGijCgrwdTIA=="; 132 133 static const char *trustAuthOutgoing = 134 "AQAAAAwAAAAcAQAASuQ+RXJdzAECAAAAAAEAAMOWL6UVfVKiJOUsGcT03H" 135 "jHxr2ACsMMOV5ynM617Tp7idNC+c4egdqk4S9YEpvR2YvHmdZdymL6F7QKm8OkXazYZF2r/gZ/bI+" 136 "jkWbsn4O8qyAc3OUKQRZwBbf+lxBW+vM4O3ZpUjz5BSKCcFQgM+MY91yVU8Nji3HNnvGnDquobFAZ" 137 "hxjL+S1l5+QZgkfyfv5mQScGRbU1Lar1xg9G3JznUb7S6pvrBO2nwK8g+KZBfJy5UeULigDH4IWo/" 138 "JmtaEGkKE2uiKIjdsEQd/uwnkouW26XzRc0ulfJnPFftGnT9KIcShPf7DLj/tstmQAAceRMFHJTY3" 139 "PmxoowoK8HUyBK5D5Fcl3MAQIAAAAAAQAAw5YvpRV9UqIk5SwZxPTceMfGvYAKwww5XnKczrXtOnu" 140 "J00L5zh6B2qThL1gSm9HZi8eZ1l3KYvoXtAqbw6RdrNhkXav+Bn9sj6ORZuyfg7yrIBzc5QpBFnAF" 141 "t/6XEFb68zg7dmlSPPkFIoJwVCAz4xj3XJVTw2OLcc2e8acOq6hsUBmHGMv5LWXn5BmCR/J+/mZBJ" 142 "wZFtTUtqvXGD0bcnOdRvtLqm+sE7afAryD4pkF8nLlR5QuKAMfghaj8ma1oQaQoTa6IoiN2wRB3+7" 143 "CeSi5bbpfNFzS6V8mc8V+0adP0ohxKE9/sMuP+2y2ZAABx5EwUclNjc+bGijCgrwdTIA=="; 144 145 118 146 static bool trust_domain_passwords_check_in(struct torture_context *tctx, 119 147 struct trustDomainPasswords *r) … … 155 183 struct torture_suite *suite = torture_suite_create(ctx, "drsblobs"); 156 184 157 torture_suite_add_ndr_pull_fn_test(suite, ForestTrustInfo, forest_trust_info_data_out, NDR_IN, forest_trust_info_check_out); 158 torture_suite_add_ndr_pull_fn_test(suite, trustDomainPasswords, trust_domain_passwords_in, NDR_IN, trust_domain_passwords_check_in); 185 torture_suite_add_ndr_pull_test(suite, ForestTrustInfo, forest_trust_info_data_out, forest_trust_info_check_out); 186 torture_suite_add_ndr_pull_test(suite, trustDomainPasswords, trust_domain_passwords_in, trust_domain_passwords_check_in); 187 188 #if 0 189 torture_suite_add_ndr_pullpush_test(suite, 190 trustAuthInOutBlob, 191 base64_decode_data_blob_talloc(suite, trustAuthIncoming), 192 NULL); 193 194 torture_suite_add_ndr_pullpush_test(suite, 195 trustAuthInOutBlob, 196 base64_decode_data_blob_talloc(suite, trustAuthOutgoing), 197 NULL); 198 #endif 159 199 160 200 return suite; -
trunk/server/source4/torture/ndr/nbt.c
r918 r920 63 63 struct torture_suite *suite = torture_suite_create(ctx, "nbt"); 64 64 65 torture_suite_add_ndr_pull_ fn_test(suite, nbt_netlogon_packet, netlogon_logon_request_req_data, NDR_IN, netlogon_logon_request_req_check);65 torture_suite_add_ndr_pull_test(suite, nbt_netlogon_packet, netlogon_logon_request_req_data, netlogon_logon_request_req_check); 66 66 67 torture_suite_add_ndr_pull_ fn_test(suite, nbt_netlogon_response2, netlogon_logon_request_resp_data, NDR_IN, netlogon_logon_request_resp_check);67 torture_suite_add_ndr_pull_test(suite, nbt_netlogon_response2, netlogon_logon_request_resp_data, netlogon_logon_request_resp_check); 68 68 69 69 return suite; -
trunk/server/source4/torture/ndr/ndr.c
r918 r920 30 30 size_t struct_size; 31 31 ndr_pull_flags_fn_t pull_fn; 32 ndr_push_flags_fn_t push_fn; 32 33 int ndr_flags; 34 int flags; 33 35 }; 34 36 35 static bool wrap_ndr_pull _test(struct torture_context *tctx,36 37 37 static bool wrap_ndr_pullpush_test(struct torture_context *tctx, 38 struct torture_tcase *tcase, 39 struct torture_test *test) 38 40 { 39 41 bool (*check_fn) (struct torture_context *ctx, void *data) = test->fn; 40 42 const struct ndr_pull_test_data *data = (const struct ndr_pull_test_data *)test->data; 41 void *ds = talloc_zero_size(tctx, data->struct_size);42 43 struct ndr_pull *ndr = ndr_pull_init_blob(&(data->data), tctx); 44 void *ds = talloc_zero_size(ndr, data->struct_size); 45 bool ret; 46 uint32_t highest_ofs; 47 48 ndr->flags |= data->flags; 43 49 44 50 ndr->flags |= LIBNDR_FLAG_REF_ALLOC; … … 47 53 "pulling"); 48 54 49 torture_assert(tctx, ndr->offset == ndr->data_size, 55 if (ndr->offset > ndr->relative_highest_offset) { 56 highest_ofs = ndr->offset; 57 } else { 58 highest_ofs = ndr->relative_highest_offset; 59 } 60 61 torture_assert(tctx, highest_ofs == ndr->data_size, 50 62 talloc_asprintf(tctx, 51 "%d unread bytes", ndr->data_size - ndr->offset)); 52 53 if (check_fn != NULL) 54 return check_fn(tctx, ds); 55 else 56 return true; 57 } 58 59 _PUBLIC_ struct torture_test *_torture_suite_add_ndr_pull_test( 60 struct torture_suite *suite, 61 const char *name, ndr_pull_flags_fn_t pull_fn, 62 DATA_BLOB db, 63 size_t struct_size, 64 int ndr_flags, 65 bool (*check_fn) (struct torture_context *ctx, void *data)) 63 "%d unread bytes", ndr->data_size - highest_ofs)); 64 65 if (check_fn != NULL) { 66 ret = check_fn(tctx, ds); 67 } else { 68 ret = true; 69 } 70 71 if (data->push_fn != NULL) { 72 DATA_BLOB outblob; 73 torture_assert_ndr_success(tctx, ndr_push_struct_blob(&outblob, ndr, ds, data->push_fn), "pushing"); 74 torture_assert_data_blob_equal(tctx, outblob, data->data, "ndr push compare"); 75 } 76 77 talloc_free(ndr); 78 return ret; 79 } 80 81 _PUBLIC_ struct torture_test *_torture_suite_add_ndr_pullpush_test( 82 struct torture_suite *suite, 83 const char *name, 84 ndr_pull_flags_fn_t pull_fn, 85 ndr_push_flags_fn_t push_fn, 86 DATA_BLOB db, 87 size_t struct_size, 88 int ndr_flags, 89 int flags, 90 bool (*check_fn) (struct torture_context *ctx, void *data)) 66 91 { 67 92 struct torture_test *test; … … 75 100 test->name = talloc_strdup(test, name); 76 101 test->description = NULL; 77 test->run = wrap_ndr_pull_test; 102 test->run = wrap_ndr_pullpush_test; 103 78 104 data = talloc(test, struct ndr_pull_test_data); 79 105 data->data = db; 80 106 data->ndr_flags = ndr_flags; 107 data->flags = flags; 81 108 data->struct_size = struct_size; 82 109 data->pull_fn = pull_fn; 110 data->push_fn = push_fn; 111 83 112 test->data = data; 84 113 test->fn = check_fn; … … 89 118 return test; 90 119 } 120 91 121 92 122 static bool wrap_ndr_inout_pull_test(struct torture_context *tctx, … … 98 128 void *ds = talloc_zero_size(tctx, data->struct_size); 99 129 struct ndr_pull *ndr; 130 uint32_t highest_ofs; 100 131 101 132 /* handle NDR_IN context */ … … 110 141 "ndr pull of context failed"); 111 142 112 torture_assert(tctx, ndr->offset == ndr->data_size, 113 talloc_asprintf(tctx, "%d unread bytes", ndr->data_size - ndr->offset)); 143 if (ndr->offset > ndr->relative_highest_offset) { 144 highest_ofs = ndr->offset; 145 } else { 146 highest_ofs = ndr->relative_highest_offset; 147 } 148 149 torture_assert(tctx, highest_ofs == ndr->data_size, 150 talloc_asprintf(tctx, "%d unread bytes", ndr->data_size - highest_ofs)); 114 151 115 152 talloc_free(ndr); … … 126 163 "ndr pull failed"); 127 164 128 torture_assert(tctx, ndr->offset == ndr->data_size, 129 talloc_asprintf(tctx, "%d unread bytes", ndr->data_size - ndr->offset)); 165 if (ndr->offset > ndr->relative_highest_offset) { 166 highest_ofs = ndr->offset; 167 } else { 168 highest_ofs = ndr->relative_highest_offset; 169 } 170 171 torture_assert(tctx, highest_ofs == ndr->data_size, 172 talloc_asprintf(tctx, "%d unread bytes", ndr->data_size - highest_ofs)); 130 173 131 174 talloc_free(ndr); -
trunk/server/source4/torture/ndr/ndr.h
r918 r920 25 25 #include "libcli/security/security.h" 26 26 27 _PUBLIC_ struct torture_test *_torture_suite_add_ndr_pull _test(27 _PUBLIC_ struct torture_test *_torture_suite_add_ndr_pullpush_test( 28 28 struct torture_suite *suite, 29 const char *name, ndr_pull_flags_fn_t fn, 29 const char *name, 30 ndr_pull_flags_fn_t pull_fn, 31 ndr_push_flags_fn_t push_fn, 30 32 DATA_BLOB db, 31 33 size_t struct_size, 32 34 int ndr_flags, 35 int flags, 33 36 bool (*check_fn) (struct torture_context *, void *data)); 34 37 … … 42 45 43 46 #define torture_suite_add_ndr_pull_test(suite,name,data,check_fn) \ 44 _torture_suite_add_ndr_pull _test(suite, #name, \45 (ndr_pull_flags_fn_t)ndr_pull_ ## name, data_blob_talloc(suite,data, sizeof(data)), \46 sizeof(struct name), NDR_SCALARS|NDR_BUFFERS, (bool (*) (struct torture_context *, void *)) check_fn);47 _torture_suite_add_ndr_pullpush_test(suite, #name, \ 48 (ndr_pull_flags_fn_t)ndr_pull_ ## name, NULL, data_blob_const(data, sizeof(data)), \ 49 sizeof(struct name), NDR_SCALARS|NDR_BUFFERS, 0, (bool (*) (struct torture_context *, void *)) check_fn); 47 50 48 51 #define torture_suite_add_ndr_pull_fn_test(suite,name,data,flags,check_fn) \ 49 _torture_suite_add_ndr_pull_test(suite, #name "_" #flags, \ 50 (ndr_pull_flags_fn_t)ndr_pull_ ## name, data_blob_talloc(suite, data, sizeof(data)), \ 51 sizeof(struct name), flags, (bool (*) (struct torture_context *, void *)) check_fn); 52 _torture_suite_add_ndr_pullpush_test(suite, #name "_" #flags, \ 53 (ndr_pull_flags_fn_t)ndr_pull_ ## name, NULL, data_blob_const(data, sizeof(data)), \ 54 sizeof(struct name), flags, 0, (bool (*) (struct torture_context *, void *)) check_fn); 55 56 #define torture_suite_add_ndr_pull_fn_test_flags(suite,name,data,flags,flags2,check_fn) \ 57 _torture_suite_add_ndr_pullpush_test(suite, #name "_" #flags "_" #flags2, \ 58 (ndr_pull_flags_fn_t)ndr_pull_ ## name, NULL, data_blob_const(data, sizeof(data)), \ 59 sizeof(struct name), flags, flags2, (bool (*) (struct torture_context *, void *)) check_fn); 60 61 #define torture_suite_add_ndr_pullpush_test(suite,name,data_blob,check_fn) \ 62 _torture_suite_add_ndr_pullpush_test(suite, #name, \ 63 (ndr_pull_flags_fn_t)ndr_pull_ ## name, \ 64 (ndr_push_flags_fn_t)ndr_push_ ## name, \ 65 data_blob, \ 66 sizeof(struct name), NDR_SCALARS|NDR_BUFFERS, 0, (bool (*) (struct torture_context *, void *)) check_fn); 52 67 53 68 #define torture_suite_add_ndr_pull_io_test(suite,name,data_in,data_out,check_fn_out) \ 54 69 _torture_suite_add_ndr_pull_inout_test(suite, #name "_INOUT", \ 55 70 (ndr_pull_flags_fn_t)ndr_pull_ ## name, \ 56 data_blob_ talloc(suite,data_in, sizeof(data_in)), \57 data_blob_ talloc(suite,data_out, sizeof(data_out)), \71 data_blob_const(data_in, sizeof(data_in)), \ 72 data_blob_const(data_out, sizeof(data_out)), \ 58 73 sizeof(struct name), \ 59 74 (bool (*) (struct torture_context *, void *)) check_fn_out); -
trunk/server/source4/torture/ndr/ntlmssp.c
r918 r920 112 112 struct torture_suite *suite = torture_suite_create(ctx, "ntlmssp"); 113 113 114 torture_suite_add_ndr_pull_fn_test(suite, NEGOTIATE_MESSAGE, ntlmssp_NEGOTIATE_MESSAGE_data, NDR_IN, ntlmssp_NEGOTIATE_MESSAGE_check); 115 /* torture_suite_add_ndr_pull_fn_test(suite, CHALLENGE_MESSAGE, ntlmssp_CHALLENGE_MESSAGE_data, NDR_IN, ntlmssp_CHALLENGE_MESSAGE_check); 116 torture_suite_add_ndr_pull_fn_test(suite, AUTHENTICATE_MESSAGE, ntlmssp_AUTHENTICATE_MESSAGE_data, NDR_IN, ntlmssp_AUTHENTICATE_MESSAGE_check); */ 117 114 torture_suite_add_ndr_pull_test(suite, NEGOTIATE_MESSAGE, ntlmssp_NEGOTIATE_MESSAGE_data, ntlmssp_NEGOTIATE_MESSAGE_check); 115 #if 0 116 torture_suite_add_ndr_pull_test(suite, CHALLENGE_MESSAGE, ntlmssp_CHALLENGE_MESSAGE_data, ntlmssp_CHALLENGE_MESSAGE_check); 117 torture_suite_add_ndr_pull_test(suite, AUTHENTICATE_MESSAGE, ntlmssp_AUTHENTICATE_MESSAGE_data, ntlmssp_AUTHENTICATE_MESSAGE_check); 118 #endif 118 119 return suite; 119 120 }
Note:
See TracChangeset
for help on using the changeset viewer.