Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

717 lines
13 KiB

  1. /+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Freeright (C) Microsoft Corporation, 1992 - 1995.
  5. //
  6. // File: ndsufree.cxx
  7. //
  8. // Contents:
  9. //
  10. // Functions:
  11. //
  12. // FreeABC1ToNDSSynId1
  13. // FreeABC2ToNDSSynId2
  14. // FreeABC3ToNDSSynId3
  15. // FreeABC4ToNDSSynId4
  16. // FreeABC5ToNDSSynId5
  17. // FreeABC6ToNDSSynId6
  18. // FreeABC7ToNDSSynId7
  19. // FreeABC8ToNDSSynId8
  20. // FreeABC9ToNDSSynId9
  21. // FreeABC10ToNDSSynId10
  22. // FreeABC11ToNDSSynId11
  23. // FreeABC12ToNDSSynId12
  24. // FreeABC13ToNDSSynId13
  25. // FreeABC14ToNDSSynId14
  26. // FreeABC15ToNDSSynId15
  27. // FreeABC16ToNDSSynId16
  28. // FreeABC17ToNDSSynId17
  29. // FreeABC18ToNDSSynId18
  30. // FreeABC19ToNDSSynId19
  31. // FreeABC20ToNDSSynId20
  32. // FreeABC21ToNDSSynId21
  33. // FreeABC22ToNDSSynId22
  34. // FreeABC23ToNDSSynId23
  35. // FreeABC24ToNDSSynId24
  36. // FreeABC25ToNDSSynId25
  37. // FreeABC26ToNDSSynId26
  38. // FreeABC27ToNDSSynId27
  39. //
  40. // History: 15-Jul-97 FelixW Created.
  41. //
  42. //----------------------------------------------------------------------------
  43. #include "nds.hxx"
  44. LPBYTE
  45. FreeNDSSynId1ToNDS1(
  46. LPBYTE lpByte
  47. )
  48. {
  49. LPASN1_TYPE_1 lpASN1_1 = (LPASN1_TYPE_1) lpByte;
  50. if (lpASN1_1->DNString) {
  51. FreeADsStr(lpASN1_1->DNString);
  52. }
  53. lpByte = (LPBYTE ) lpASN1_1 + sizeof(ASN1_TYPE_1);
  54. return(lpByte);
  55. }
  56. LPBYTE
  57. FreeNDSSynId2ToNDS2(
  58. LPBYTE lpByte
  59. )
  60. {
  61. LPASN1_TYPE_2 lpASN1_2 = (LPASN1_TYPE_2) lpByte;
  62. if (lpASN1_2->CaseExactString) {
  63. FreeADsStr(lpASN1_2->CaseExactString);
  64. }
  65. lpByte = (LPBYTE ) lpASN1_2 + sizeof(ASN1_TYPE_2);
  66. return(lpByte);
  67. }
  68. LPBYTE
  69. FreeNDSSynId3ToNDS3(
  70. LPBYTE lpByte
  71. )
  72. {
  73. LPASN1_TYPE_3 lpASN1_3 = (LPASN1_TYPE_3) lpByte;
  74. if (lpASN1_3->CaseIgnoreString) {
  75. FreeADsStr(lpASN1_3->CaseIgnoreString);
  76. }
  77. lpByte = (LPBYTE ) lpASN1_3 + sizeof(ASN1_TYPE_3);
  78. return(lpByte);
  79. }
  80. LPBYTE
  81. FreeNDSSynId4ToNDS4(
  82. LPBYTE lpByte
  83. )
  84. {
  85. LPASN1_TYPE_4 lpASN1_4 = (LPASN1_TYPE_4) lpByte;
  86. if (lpASN1_4->PrintableString) {
  87. FreeADsStr(lpASN1_4->PrintableString);
  88. }
  89. lpByte = (LPBYTE ) lpASN1_4 + sizeof(ASN1_TYPE_4);
  90. return(lpByte);
  91. }
  92. LPBYTE
  93. FreeNDSSynId5ToNDS5(
  94. LPBYTE lpByte
  95. )
  96. {
  97. LPASN1_TYPE_5 lpASN1_5 = (LPASN1_TYPE_5) lpByte;
  98. if (lpASN1_5->NumericString) {
  99. FreeADsStr(lpASN1_5->NumericString);
  100. }
  101. lpByte = (LPBYTE ) lpASN1_5 + sizeof(ASN1_TYPE_5);
  102. return(lpByte);
  103. }
  104. LPBYTE
  105. FreeNDSSynId6ToNDS6(
  106. LPBYTE lpByte
  107. )
  108. {
  109. LPASN1_TYPE_6 lpASN1_6 = (LPASN1_TYPE_6) lpByte;
  110. if (lpASN1_6->String) {
  111. FreeADsStr(lpASN1_6->String);
  112. }
  113. while (lpASN1_6->Next)
  114. {
  115. if (lpASN1_6->String) {
  116. FreeADsStr(lpASN1_6->String);
  117. }
  118. lpASN1_6 = (LPASN1_TYPE_6)lpASN1_6->Next;
  119. }
  120. lpByte = (LPBYTE ) lpASN1_6 + sizeof(ASN1_TYPE_6);
  121. return(lpByte);
  122. }
  123. LPBYTE
  124. FreeNDSSynId7ToNDS7(
  125. LPBYTE lpByte
  126. )
  127. {
  128. LPASN1_TYPE_8 lpASN1_8 = (LPASN1_TYPE_8) lpByte;
  129. lpByte = (LPBYTE ) lpASN1_8 + sizeof(ASN1_TYPE_8);
  130. return(lpByte);
  131. }
  132. LPBYTE
  133. FreeNDSSynId8ToNDS8(
  134. LPBYTE lpByte
  135. )
  136. {
  137. LPASN1_TYPE_8 lpASN1_8 = (LPASN1_TYPE_8) lpByte;
  138. lpByte = (LPBYTE ) lpASN1_8 + sizeof(ASN1_TYPE_8);
  139. return(lpByte);
  140. }
  141. LPBYTE
  142. FreeNDSSynId9ToNDS9(
  143. LPBYTE lpByte
  144. )
  145. {
  146. LPASN1_TYPE_9 lpASN1_9 = (LPASN1_TYPE_9) lpByte;
  147. if (lpASN1_9->OctetString) {
  148. FreeADsMem((LPBYTE)lpASN1_9->OctetString);
  149. }
  150. lpByte = (LPBYTE ) lpASN1_9 + sizeof(ASN1_TYPE_9);
  151. return(lpByte);
  152. }
  153. LPBYTE
  154. FreeNDSSynId10ToNDS10(
  155. LPBYTE lpByte
  156. )
  157. {
  158. LPASN1_TYPE_10 lpASN1_10 = (LPASN1_TYPE_10) lpByte;
  159. if (lpASN1_10->TelephoneNumber) {
  160. FreeADsStr(lpASN1_10->TelephoneNumber);
  161. }
  162. lpByte = (LPBYTE ) lpASN1_10 + sizeof(ASN1_TYPE_10);
  163. return(lpByte);
  164. }
  165. LPBYTE
  166. FreeNDSSynId11ToNDS11(
  167. LPBYTE lpByte
  168. )
  169. {
  170. LPASN1_TYPE_11 lpASN1_11 = (LPASN1_TYPE_11) lpByte;
  171. if (lpASN1_11->TelephoneNumber) {
  172. FreeADsStr(lpASN1_11->TelephoneNumber);
  173. }
  174. lpByte = (LPBYTE ) lpASN1_11 + sizeof(ASN1_TYPE_11);
  175. return(lpByte);
  176. }
  177. LPBYTE
  178. FreeNDSSynId12ToNDS12(
  179. LPBYTE lpByte
  180. )
  181. {
  182. LPASN1_TYPE_12 lpASN1_12 = (LPASN1_TYPE_12) lpByte;
  183. if (lpASN1_12->Address) {
  184. FreeADsMem((LPBYTE)lpASN1_12->Address);
  185. }
  186. lpByte = (LPBYTE ) lpASN1_12 + sizeof(ASN1_TYPE_12);
  187. return(lpByte);
  188. }
  189. LPBYTE
  190. FreeNDSSynId13ToNDS13(
  191. LPBYTE lpByte
  192. )
  193. {
  194. //
  195. // BugBug: KrishnaG not supported!
  196. //
  197. return(lpByte);
  198. }
  199. LPBYTE
  200. FreeNDSSynId14ToNDS14(
  201. LPBYTE lpByte
  202. )
  203. {
  204. LPASN1_TYPE_14 lpASN1_14 = (LPASN1_TYPE_14) lpByte;
  205. if (lpASN1_14->Address) {
  206. FreeADsStr(lpASN1_14->Address);
  207. }
  208. lpByte = (LPBYTE ) lpASN1_14 + sizeof(ASN1_TYPE_14);
  209. return(lpByte);
  210. }
  211. LPBYTE
  212. FreeNDSSynId15ToNDS15(
  213. LPBYTE lpByte
  214. )
  215. {
  216. LPASN1_TYPE_15 lpASN1_15 = (LPASN1_TYPE_15) lpByte;
  217. if (lpASN1_15->VolumeName) {
  218. FreeADsStr(lpASN1_15->VolumeName);
  219. }
  220. if (lpASN1_15->Path) {
  221. FreeADsStr(lpASN1_15->Path);
  222. }
  223. lpByte = (LPBYTE ) lpASN1_15 + sizeof(ASN1_TYPE_15);
  224. return(lpByte);
  225. }
  226. LPBYTE
  227. FreeNDSSynId16ToNDS16(
  228. LPBYTE lpByte
  229. )
  230. {
  231. //
  232. // BugBug: KrishnaG not supported!
  233. //
  234. return(lpByte);
  235. }
  236. LPBYTE
  237. FreeNDSSynId17ToNDS17(
  238. LPBYTE lpByte
  239. )
  240. {
  241. LPASN1_TYPE_17 lpASN1_17 = (LPASN1_TYPE_17) lpByte;
  242. if (lpASN1_17->ProtectedAttrName) {
  243. FreeADsStr(lpASN1_17->ProtectedAttrName);
  244. }
  245. if (lpASN1_17->SubjectName) {
  246. FreeADsStr(lpASN1_17->SubjectName);
  247. }
  248. lpByte = (LPBYTE ) lpASN1_17 + sizeof(ASN1_TYPE_17);
  249. return(lpByte);
  250. }
  251. LPBYTE
  252. FreeNDSSynId18ToNDS18(
  253. LPBYTE lpByte
  254. )
  255. {
  256. LPASN1_TYPE_18 lpASN1_18 = (LPASN1_TYPE_18) lpByte;
  257. if (lpASN1_18->PostalAddress[0]) {
  258. FreeADsStr(lpASN1_18->PostalAddress[0]);
  259. }
  260. if (lpASN1_18->PostalAddress[1]) {
  261. FreeADsStr(lpASN1_18->PostalAddress[1]);
  262. }
  263. if (lpASN1_18->PostalAddress[2]) {
  264. FreeADsStr(lpASN1_18->PostalAddress[2]);
  265. }
  266. if (lpASN1_18->PostalAddress[3]) {
  267. FreeADsStr(lpASN1_18->PostalAddress[3]);
  268. }
  269. if (lpASN1_18->PostalAddress[4]) {
  270. FreeADsStr(lpASN1_18->PostalAddress[4]);
  271. }
  272. if (lpASN1_18->PostalAddress[5]) {
  273. FreeADsStr(lpASN1_18->PostalAddress[5]);
  274. }
  275. lpByte = (LPBYTE ) lpASN1_18 + sizeof(ASN1_TYPE_18);
  276. return(lpByte);
  277. }
  278. LPBYTE
  279. FreeNDSSynId19ToNDS19(
  280. LPBYTE lpByte
  281. )
  282. {
  283. //
  284. // BugBug: KrishnaG not supported!
  285. //
  286. return(lpByte);
  287. LPASN1_TYPE_19 lpASN1_19 = (LPASN1_TYPE_19) lpByte;
  288. lpByte = (LPBYTE ) lpASN1_19 + sizeof(ASN1_TYPE_19);
  289. return(lpByte);
  290. }
  291. LPBYTE
  292. FreeNDSSynId20ToNDS20(
  293. LPBYTE lpByte
  294. )
  295. {
  296. LPASN1_TYPE_20 lpASN1_20 = (LPASN1_TYPE_20) lpByte;
  297. if (lpASN1_20->ClassName) {
  298. FreeADsStr(lpASN1_20->ClassName);
  299. }
  300. lpByte = (LPBYTE ) lpASN1_20 + sizeof(ASN1_TYPE_20);
  301. return(lpByte);
  302. }
  303. LPBYTE
  304. FreeNDSSynId21ToNDS21(
  305. LPBYTE lpByte
  306. )
  307. {
  308. LPASN1_TYPE_21 lpASN1_21 = (LPASN1_TYPE_21) lpByte;
  309. //
  310. // The Length value is supposedly always zero!!
  311. //
  312. lpByte = (LPBYTE ) lpASN1_21 + sizeof(ASN1_TYPE_21);
  313. return(lpByte);
  314. }
  315. LPBYTE
  316. FreeNDSSynId22ToNDS22(
  317. LPBYTE lpByte
  318. )
  319. {
  320. LPASN1_TYPE_22 lpASN1_22 = (LPASN1_TYPE_22) lpByte;
  321. lpByte = (LPBYTE ) lpASN1_22 + sizeof(ASN1_TYPE_22);
  322. return(lpByte);
  323. }
  324. LPBYTE
  325. FreeNDSSynId23ToNDS23(
  326. LPBYTE lpByte
  327. )
  328. {
  329. LPASN1_TYPE_23 lpASN1_23 = (LPASN1_TYPE_23) lpByte;
  330. if (lpASN1_23->ObjectName) {
  331. FreeADsStr(lpASN1_23->ObjectName);
  332. }
  333. lpByte = (LPBYTE ) lpASN1_23 + sizeof(ASN1_TYPE_23);
  334. return(lpByte);
  335. }
  336. LPBYTE
  337. FreeNDSSynId24ToNDS24(
  338. LPBYTE lpByte
  339. )
  340. {
  341. LPASN1_TYPE_24 lpASN1_24 = (LPASN1_TYPE_24) lpByte;
  342. lpByte = (LPBYTE ) lpASN1_24 + sizeof(ASN1_TYPE_24);
  343. return(lpByte);
  344. }
  345. LPBYTE
  346. FreeNDSSynId25ToNDS25(
  347. LPBYTE lpByte
  348. )
  349. {
  350. LPASN1_TYPE_25 lpASN1_25 = (LPASN1_TYPE_25) lpByte;
  351. if (lpASN1_25->ObjectName) {
  352. FreeADsStr(lpASN1_25->ObjectName);
  353. }
  354. lpByte = (LPBYTE ) lpASN1_25 + sizeof(ASN1_TYPE_25);
  355. return(lpByte);
  356. }
  357. LPBYTE
  358. FreeNDSSynId26ToNDS26(
  359. LPBYTE lpByte
  360. )
  361. {
  362. LPASN1_TYPE_26 lpASN1_26 = (LPASN1_TYPE_26) lpByte;
  363. if (lpASN1_26->ObjectName) {
  364. FreeADsStr(lpASN1_26->ObjectName);
  365. }
  366. lpByte = (LPBYTE ) lpASN1_26 + sizeof(ASN1_TYPE_26);
  367. return(lpByte);
  368. }
  369. LPBYTE
  370. FreeNDSSynId27ToNDS27(
  371. LPBYTE lpByte
  372. )
  373. {
  374. LPASN1_TYPE_27 lpASN1_27 = (LPASN1_TYPE_27) lpByte;
  375. lpByte = (LPBYTE ) lpASN1_27 + sizeof(ASN1_TYPE_27);
  376. return(lpByte);
  377. }
  378. LPBYTE
  379. FreeNDSSynIdToNDS(
  380. DWORD dwSyntaxId,
  381. LPBYTE lpByte
  382. )
  383. {
  384. switch (dwSyntaxId) {
  385. case 1:
  386. lpByte = FreeNDSSynId1ToNDS1(
  387. lpByte
  388. );
  389. break;
  390. case 2:
  391. lpByte = FreeNDSSynId2ToNDS2(
  392. lpByte
  393. );
  394. break;
  395. case 3:
  396. lpByte = FreeNDSSynId3ToNDS3(
  397. lpByte
  398. );
  399. break;
  400. case 4:
  401. lpByte = FreeNDSSynId4ToNDS4(
  402. lpByte
  403. );
  404. break;
  405. case 5:
  406. lpByte = FreeNDSSynId5ToNDS5(
  407. lpByte
  408. );
  409. break;
  410. case 6:
  411. lpByte = FreeNDSSynId6ToNDS6(
  412. lpByte
  413. );
  414. break;
  415. case 7:
  416. lpByte = FreeNDSSynId7ToNDS7(
  417. lpByte
  418. );
  419. break;
  420. case 8:
  421. lpByte = FreeNDSSynId8ToNDS8(
  422. lpByte
  423. );
  424. break;
  425. case 9:
  426. lpByte = FreeNDSSynId9ToNDS9(
  427. lpByte
  428. );
  429. break;
  430. case 10:
  431. lpByte = FreeNDSSynId10ToNDS10(
  432. lpByte
  433. );
  434. break;
  435. case 11:
  436. lpByte = FreeNDSSynId11ToNDS11(
  437. lpByte
  438. );
  439. break;
  440. case 12:
  441. lpByte = FreeNDSSynId12ToNDS12(
  442. lpByte
  443. );
  444. break;
  445. case 13:
  446. lpByte = FreeNDSSynId13ToNDS13(
  447. lpByte
  448. );
  449. break;
  450. case 14:
  451. lpByte = FreeNDSSynId14ToNDS14(
  452. lpByte
  453. );
  454. break;
  455. case 15:
  456. lpByte = FreeNDSSynId15ToNDS15(
  457. lpByte
  458. );
  459. break;
  460. case 16:
  461. lpByte = FreeNDSSynId16ToNDS16(
  462. lpByte
  463. );
  464. break;
  465. case 17:
  466. lpByte = FreeNDSSynId17ToNDS17(
  467. lpByte
  468. );
  469. break;
  470. case 18:
  471. lpByte = FreeNDSSynId18ToNDS18(
  472. lpByte
  473. );
  474. break;
  475. case 19:
  476. lpByte = FreeNDSSynId19ToNDS19(
  477. lpByte
  478. );
  479. break;
  480. case 20:
  481. lpByte = FreeNDSSynId20ToNDS20(
  482. lpByte
  483. );
  484. break;
  485. case 21:
  486. lpByte = FreeNDSSynId21ToNDS21(
  487. lpByte
  488. );
  489. break;
  490. case 22:
  491. lpByte = FreeNDSSynId22ToNDS22(
  492. lpByte
  493. );
  494. break;
  495. case 23:
  496. lpByte = FreeNDSSynId23ToNDS23(
  497. lpByte
  498. );
  499. break;
  500. case 24:
  501. lpByte = FreeNDSSynId24ToNDS24(
  502. lpByte
  503. );
  504. break;
  505. case 25:
  506. lpByte = FreeNDSSynId25ToNDS25(
  507. lpByte
  508. );
  509. break;
  510. case 26:
  511. lpByte = FreeNDSSynId26ToNDS26(
  512. lpByte
  513. );
  514. break;
  515. case 27:
  516. lpByte = FreeNDSSynId27ToNDS27(
  517. lpByte
  518. );
  519. break;
  520. default:
  521. break;
  522. }
  523. return(lpByte);
  524. }
  525. HRESULT
  526. FreeMarshallMemory(
  527. DWORD dwSyntaxId,
  528. DWORD dwNumValues,
  529. LPBYTE lpValue
  530. )
  531. {
  532. DWORD i = 0;
  533. for (i = 0; i < dwNumValues; i++) {
  534. lpValue = FreeNDSSynIdToNDS(
  535. dwSyntaxId,
  536. lpValue
  537. );
  538. }
  539. RRETURN(S_OK);
  540. }