@@ -766,9 +766,10 @@ convertBinData(getdns_bindata* data,
766
766
PyObject * a_string ;
767
767
768
768
#if PY_MAJOR_VERSION >= 3
769
- if ((a_string = PyUnicode_FromString ((char * )data -> data )) == NULL ) {
769
+ if ((a_string = PyUnicode_FromStringAndSize ((char * )data -> data ), ( Py_ssize_t ) data -> size ) == NULL ) {
770
770
#else
771
- if ((a_string = PyString_FromString ((char * )data -> data )) == NULL ) {
771
+
772
+ if ((a_string = PyString_FromStringAndSize ((char * )data -> data , (Py_ssize_t )data -> size )) == NULL ) {
772
773
#endif
773
774
PyErr_SetString (getdns_error , GETDNS_RETURN_GENERIC_ERROR_TEXT );
774
775
return NULL ;
@@ -870,9 +871,11 @@ convertToDict(struct getdns_dict* dict) {
870
871
getdns_dict_get_bindata (dict , (char * )nameBin -> data , & data );
871
872
PyObject * res = convertBinData (data , (char * )nameBin -> data );
872
873
#if PY_MAJOR_VERSION >= 3
873
- PyDict_SetItem (resultsdict1 , PyUnicode_FromString ((char * ) nameBin -> data ), res );
874
+ PyDict_SetItem (resultsdict1 , PyUnicode_FromStringAndSize ((char * )nameBin -> data ,
875
+ (Py_ssize_t )nameBin -> size ), res );
874
876
#else
875
- PyDict_SetItem (resultsdict1 , PyString_FromString ((char * ) nameBin -> data ), res );
877
+ PyDict_SetItem (resultsdict1 , PyString_FromStringAndSize ((char * )nameBin -> data ,
878
+ (Py_ssize_t )nameBin -> size ), res );
876
879
#endif
877
880
break ;
878
881
}
@@ -883,9 +886,11 @@ convertToDict(struct getdns_dict* dict) {
883
886
PyObject * rl1 = Py_BuildValue ("i" , res );
884
887
PyObject * res1 = Py_BuildValue ("O" , rl1 );
885
888
#if PY_MAJOR_VERSION >= 3
886
- PyDict_SetItem (resultsdict1 , PyUnicode_FromString ((char * ) nameBin -> data ), res1 );
889
+ PyDict_SetItem (resultsdict1 , PyUnicode_FromStringAndSize ((char * )nameBin -> data ,
890
+ (Py_ssize_t )nameBin -> size ), res1 );
887
891
#else
888
- PyDict_SetItem (resultsdict1 , PyString_FromString ((char * ) nameBin -> data ), res1 );
892
+ PyDict_SetItem (resultsdict1 , PyString_FromStringAndSize ((char * )nameBin -> data ,
893
+ (Py_ssize_t )nameBin -> size ), res1 );
889
894
#endif
890
895
break ;
891
896
}
@@ -896,9 +901,11 @@ convertToDict(struct getdns_dict* dict) {
896
901
PyObject * rl1 = convertToDict (subdict );
897
902
PyObject * res1 = Py_BuildValue ("O" , rl1 );
898
903
#if PY_MAJOR_VERSION >= 3
899
- PyDict_SetItem (resultsdict1 , PyUnicode_FromString ((char * ) nameBin -> data ), res1 );
904
+ PyDict_SetItem (resultsdict1 , PyUnicode_FromStringAndSize ((char * )nameBin -> data ,
905
+ (Py_ssize_t )nameBin -> size ), res1 );
900
906
#else
901
- PyDict_SetItem (resultsdict1 , PyString_FromString ((char * ) nameBin -> data ), res1 );
907
+ PyDict_SetItem (resultsdict1 , PyString_FromStringAndSize ((char * )nameBin -> data ,
908
+ (Py_ssize_t )nameBin -> size ), res1 );
902
909
#endif
903
910
break ;
904
911
}
@@ -909,9 +916,11 @@ convertToDict(struct getdns_dict* dict) {
909
916
PyObject * rl1 = convertToList (list );
910
917
PyObject * res1 = Py_BuildValue ("O" , rl1 );
911
918
#if PY_MAJOR_VERSION >= 3
912
- PyObject * key = PyUnicode_FromString ((char * )nameBin -> data );
919
+ PyObject * key = PyUnicode_FromStringAndSize ((char * )nameBin -> data ,
920
+ (Py_ssize_t )nameBin -> size );
913
921
#else
914
- PyObject * key = PyString_FromString ((char * )nameBin -> data );
922
+ PyObject * key = PyString_FromStringAndSize ((char * )nameBin -> data ,
923
+ (Py_ssize_t )nameBin -> size );
915
924
#endif
916
925
PyDict_SetItem (resultsdict1 , key , res1 );
917
926
break ;
@@ -1024,9 +1033,11 @@ getdns_dict_to_ip_string(getdns_dict* dict) {
1024
1033
return NULL ;
1025
1034
}
1026
1035
#if PY_MAJOR_VERSION >= 3
1027
- if (PyDict_SetItemString (addr_dict , "address_type" , PyUnicode_FromString ((char * )type -> data )) != 0 ) {
1036
+ if (PyDict_SetItemString (addr_dict , "address_type" , PyUnicode_FromStringAndSize ((char * )type -> data ,
1037
+ (Py_ssize_t )type -> size )) != 0 ) {
1028
1038
#else
1029
- if (PyDict_SetItemString (addr_dict , "address_type" , PyString_FromString ((char * )type -> data )) != 0 ) {
1039
+ if (PyDict_SetItemString (addr_dict , "address_type" , PyString_FromStringAndSize ((char * )type -> data ,
1040
+ (Py_ssize_t )type -> size )) != 0 ) {
1030
1041
#endif
1031
1042
PyErr_SetString (getdns_error , GETDNS_RETURN_GENERIC_ERROR_TEXT );
1032
1043
return NULL ;
@@ -1048,91 +1059,4 @@ getdns_dict_to_ip_string(getdns_dict* dict) {
1048
1059
return NULL ;
1049
1060
}
1050
1061
1051
- PyObject *
1052
- getFullResponse (struct getdns_dict * dict )
1053
- {
1054
-
1055
- PyObject * resultslist ;
1056
- if ((resultslist = PyDict_New ()) == NULL ) {
1057
- error_exit ("Unable to allocate response list" , 0 );
1058
- return NULL ;
1059
- }
1060
-
1061
- getdns_list * names ;
1062
- getdns_dict_get_names (dict , & names );
1063
- size_t len = 0 , i = 0 ;
1064
- getdns_list_get_length (names , & len );
1065
- for (i = 0 ; i < len ; ++ i ) {
1066
- getdns_bindata * nameBin ;
1067
- getdns_list_get_bindata (names , i , & nameBin );
1068
- getdns_data_type type ;
1069
- getdns_dict_get_data_type (dict , (char * )nameBin -> data , & type );
1070
- switch (type ) {
1071
- case t_bindata :
1072
- {
1073
- getdns_bindata * data = NULL ;
1074
- getdns_dict_get_bindata (dict , (char * )nameBin -> data , & data );
1075
- PyObject * res = convertBinData (data , (char * )nameBin -> data );
1076
- if (res ) {
1077
- #if PY_MAJOR_VERSION >= 3
1078
- PyDict_SetItem (resultslist , PyUnicode_FromString ((char * )nameBin -> data ), res );
1079
- #else
1080
- PyDict_SetItem (resultslist , PyString_FromString ((char * )nameBin -> data ), res );
1081
- #endif
1082
- } else {
1083
- PyObject * res1 = Py_BuildValue ("s" , "empty" );
1084
- #if PY_MAJOR_VERSION >= 3
1085
- PyDict_SetItem (resultslist , PyUnicode_FromString ((char * )nameBin -> data ), res1 );
1086
- #else
1087
- PyDict_SetItem (resultslist , PyString_FromString ((char * )nameBin -> data ), res1 );
1088
- #endif
1089
- }
1090
- break ;
1091
- }
1092
- case t_int :
1093
- {
1094
- uint32_t res = 0 ;
1095
- getdns_dict_get_int (dict , (char * )nameBin -> data , & res );
1096
- PyObject * res1 = Py_BuildValue ("i" , res );
1097
- #if PY_MAJOR_VERSION >= 3
1098
- PyDict_SetItem (resultslist , PyUnicode_FromString ((char * )nameBin -> data ), res1 );
1099
- #else
1100
- PyDict_SetItem (resultslist , PyString_FromString ((char * )nameBin -> data ), res1 );
1101
- #endif
1102
- break ;
1103
- }
1104
- case t_dict :
1105
- {
1106
- getdns_dict * subdict = NULL ;
1107
- getdns_dict_get_dict (dict , (char * )nameBin -> data , & subdict );
1108
- PyObject * rl1 = convertToDict (subdict );
1109
- PyObject * res1 = Py_BuildValue ("O" , rl1 );
1110
- #if PY_MAJOR_VERSION >= 3
1111
- PyDict_SetItem (resultslist , PyUnicode_FromString ((char * )nameBin -> data ), res1 );
1112
- #else
1113
- PyDict_SetItem (resultslist , PyString_FromString ((char * )nameBin -> data ), res1 );
1114
- #endif
1115
- break ;
1116
- }
1117
- case t_list :
1118
- {
1119
- getdns_list * list = NULL ;
1120
- getdns_dict_get_list (dict , (char * )nameBin -> data , & list );
1121
- PyObject * rl1 = convertToList (list );
1122
- #if PY_MAJOR_VERSION >= 3
1123
- PyDict_SetItem (resultslist , PyUnicode_FromString ((char * )nameBin -> data ), rl1 );
1124
- #else
1125
- PyDict_SetItem (resultslist , PyString_FromString ((char * )nameBin -> data ), rl1 );
1126
- #endif
1127
- break ;
1128
- }
1129
- default :
1130
- break ;
1131
- }
1132
- }
1133
-
1134
- getdns_list_destroy (names );
1135
-
1136
- return resultslist ;
1137
- }
1138
1062
0 commit comments