- Timestamp:
- 02/05/10 06:01:18 (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/regfi.h
r166 r167 159 159 #define REGFI_NK_FLAG_UNKNOWN2 0x1000 160 160 161 /* This next one shows up on root keys in some Vista "software" registries */ 161 /* This next one shows up in some Vista "software" registries */ 162 /* XXX: This shows up in the following two SOFTWARE keys in Vista: 163 * /Wow6432Node/Microsoft 164 * /Wow6432Node/Microsoft/Cryptography 165 * 166 * It comes along with UNKNOWN2 and ASCIINAME for a total flags value of 0x10A0 167 */ 162 168 #define REGFI_NK_FLAG_UNKNOWN3 0x0080 163 169 … … 201 207 | REGFI_NK_FLAG_VOLATILE\ 202 208 | REGFI_NK_FLAG_UNKNOWN1\ 203 | REGFI_NK_FLAG_UNKNOWN2) 209 | REGFI_NK_FLAG_UNKNOWN2\ 210 | REGFI_NK_FLAG_UNKNOWN3) 204 211 205 212 /* HBIN block */ … … 720 727 721 728 /* regfi_iterator_first_subkey: Sets the internal subkey index to the first 722 * subkey referenced by the current key. 723 * 724 * Arguments: 725 * i -- the iterator 726 * 727 * Returns: 728 * A read-only key structure for the newly referenced first subkey, 729 * or NULL on failure. Failure may be due to a lack of any subkeys or other 730 * errors. 729 * subkey referenced by the current key and returns 730 * that key. 731 * 732 * Arguments: 733 * i -- the iterator 734 * 735 * Returns: 736 * A newly allocated key structure for the newly referenced first subkey, or 737 * NULL on failure. Failure may be due to a lack of any subkeys or other 738 * errors. Newly allocated keys must be freed with regfi_free_key. 731 739 */ 732 740 REGFI_NK_REC* regfi_iterator_first_subkey(REGFI_ITERATOR* i); … … 744 752 */ 745 753 REGFI_NK_REC* regfi_iterator_cur_subkey(REGFI_ITERATOR* i); 754 755 756 /* regfi_iterator_next_subkey: Increments the internal subkey index to the next 757 * key in the subkey-list and returns the subkey 758 * for that index. 759 * 760 * Arguments: 761 * i -- the iterator 762 * 763 * Returns: 764 * A newly allocated key structure for the next subkey or NULL on 765 * failure. Newly allocated keys must be freed with 766 * regfi_free_key. 767 */ 746 768 REGFI_NK_REC* regfi_iterator_next_subkey(REGFI_ITERATOR* i); 769 770 771 /* regfi_iterator_find_subkey: Searches for a subkey with a given name under the 772 * current key. 773 * 774 * Arguments: 775 * i -- the iterator 776 * subkey_name -- subkey name to search for 777 * 778 * Returns: 779 * True if such a subkey was found, false otherwise. If a subkey is found, 780 * the current subkey index is set to that subkey. Otherwise, the subkey 781 * index remains at the same location as before the call. 782 */ 747 783 bool regfi_iterator_find_subkey(REGFI_ITERATOR* i, 748 784 const char* subkey_name); 749 785 786 /* regfi_iterator_first_value: Sets the internal value index to the first 787 * value referenced by the current key and returns 788 * that value. 789 * 790 * Arguments: 791 * i -- the iterator 792 * 793 * Returns: 794 * A newly allocated value structure for the newly referenced first value, 795 * or NULL on failure. Failure may be due to a lack of any values or other 796 * errors. Newly allocated keys must be freed with regfi_free_value. 797 */ 750 798 REGFI_VK_REC* regfi_iterator_first_value(REGFI_ITERATOR* i); 799 800 801 /* regfi_iterator_cur_value: Returns the currently indexed value. 802 * 803 * Arguments: 804 * i -- the iterator 805 * 806 * Returns: 807 * A newly allocated value structure for the currently referenced value, 808 * or NULL on failure. Newly allocated values must be freed with 809 * regfi_free_value. 810 */ 751 811 REGFI_VK_REC* regfi_iterator_cur_value(REGFI_ITERATOR* i); 812 813 814 /* regfi_iterator_next_value: Increments the internal value index to the next 815 * value in the value-list and returns the value 816 * for that index. 817 * 818 * Arguments: 819 * i -- the iterator 820 * 821 * Returns: 822 * A newly allocated key structure for the next value or NULL on failure. 823 * Newly allocated keys must be freed with regfi_free_value. 824 */ 752 825 REGFI_VK_REC* regfi_iterator_next_value(REGFI_ITERATOR* i); 826 827 828 /* regfi_iterator_find_value: Searches for a value with a given name under the 829 * current key. 830 * 831 * Arguments: 832 * i -- the iterator 833 * value_name -- value name to search for 834 * 835 * Returns: 836 * True if such a value was found, false otherwise. If a value is found, 837 * the current value index is set to that value. Otherwise, the value 838 * index remains at the same location as before the call. 839 */ 753 840 bool regfi_iterator_find_value(REGFI_ITERATOR* i, 754 841 const char* value_name); 755 842 843 844 /* regfi_iterator_fetch_classname: Retrieves classname for a given key. 845 * 846 * Arguments: 847 * i -- the iterator 848 * key -- the key whose classname is desired 849 * 850 * Returns: 851 * Returns a newly allocated classname structure, or NULL on failure. 852 * Classname structures must be freed with regfi_free_classname. 853 */ 756 854 REGFI_CLASSNAME* regfi_iterator_fetch_classname(REGFI_ITERATOR* i, 757 855 const REGFI_NK_REC* key); 856 857 858 /* regfi_iterator_fetch_data: Retrieves data for a given value. 859 * 860 * Arguments: 861 * i -- the iterator 862 * value -- the value whose data is desired 863 * 864 * Returns: 865 * Returns a newly allocated data structure, or NULL on failure. 866 * Data structures must be freed with regfi_free_data. 867 */ 758 868 REGFI_DATA* regfi_iterator_fetch_data(REGFI_ITERATOR* i, 759 869 const REGFI_VK_REC* value); -
trunk/lib/regfi.c
r166 r167 1383 1383 { 1384 1384 if(file->last_message != NULL) 1385 free( last_message);1385 free(file->last_message); 1386 1386 1387 1387 talloc_free(file); … … 1708 1708 REGFI_VK_REC* cur; 1709 1709 bool found = false; 1710 uint32 old_value = i->cur_value; 1710 1711 1711 1712 /* XXX: cur->valuename can be NULL in the registry. … … 1727 1728 } 1728 1729 } 1729 1730 return found; 1730 1731 if(found == false) 1732 { 1733 i->cur_value = old_value; 1734 return false; 1735 } 1736 1737 regfi_free_value(cur); 1738 return true; 1731 1739 } 1732 1740
Note: See TracChangeset
for help on using the changeset viewer.