Advertisement
Guest User

panda_unicode_out

a guest
Jul 22nd, 2014
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.38 KB | None | 0 0
  1. # most of these errors are actually thrown by
  2. #PyUnicode_DecodeUTF8Stateful in ./Objects/unicodeobject.c
  3. #not sure if there is any way to use try/catch in the c code to handle this
  4. #but maybe there is
  5.  
  6. #recall that the alternative here is to just naievely use bytes and see how it goes
  7.  
  8. #TODO PyUnicode_Check is our solution!
  9.  
  10. #./Include/object.h:508:PyAPI_FUNC(void) _PyObject_Dump(PyObject *);
  11. #./Include/object.h:510:PyAPI_FUNC(PyObject *) PyObject_Repr(PyObject *);
  12. #./Include/object.h:511:PyAPI_FUNC(PyObject *) PyObject_Str(PyObject *);
  13. #./Include/object.h:512:PyAPI_FUNC(PyObject *) PyObject_ASCII(PyObject *);
  14. #./Include/object.h:513:PyAPI_FUNC(PyObject *) PyObject_Bytes(PyObject *);
  15.  
  16.  
  17. # we have not addressed the other half of the issue which is the ability to put bad data in, sadly can't just return bytes for everything like in past
  18. # should probably look for #if PY_MAJOR_VERSION >= 3
  19. # = this usage gets a value FROM python so is not an issue
  20. ./direct/src/dcparser/dcClass.cxx:1001: DCClass::client_format_generate_CMU
  21. ./direct/src/dcparser/dcClass.cxx:1090: DCClass::ai_format_generate
  22. #./direct/src/dcparser/dcField.cxx:589: DCField::get_pystr
  23. #./direct/src/dcparser/dcField.cxx:600: DCField::get_pystr
  24. #./direct/src/dcparser/dcField.cxx:612: DCField::get_pystr
  25. #./direct/src/dcparser/dcPacker.cxx:766: DCPacker::pack_object
  26. #./direct/src/dcparser/dcPacker.cxx:769: DCPacker::pack_object
  27. #./direct/src/dcparser/dcPacker.cxx:781: DCPacker::pack_object
  28. ./direct/src/dcparser/dcPacker.cxx:950: DCPacker::pack_object #this should be ok if pack_type actually works
  29. #./direct/src/distributed/cConnectionRepository.cxx:986: CConnectionRepository::describe_message #ok
  30. ./direct/src/distributed/cConnectionRepository.cxx:997: CConnectionRepository::describe_message #check if result is safe
  31. #./direct/src/plugin/p3dPythonRun.cxx:1583: P3DPythonRun::pyobj_to_xml
  32. #./direct/src/plugin/p3dPythonRun.cxx:1586: P3DPythonRun::pyobj_to_xml #seems ok
  33. ./direct/src/plugin/p3dPythonRun.cxx:1602: P3DPythonRun::pyobj_to_xml #check no if PY_... here
  34. #./direct/src/plugin/p3dPythonRun.cxx:1607: P3DPythonRun::pyobj_to_xml #seems ok
  35. #./direct/src/plugin/p3dPythonRun.cxx:1655: P3DPythonRun::pyobj_to_xml #ok
  36. #./direct/src/plugin/p3dPythonRun.cxx:1657: P3DPythonRun::pyobj_to_xml #ok
  37. #./direct/src/plugin/p3dPythonRun.cxx:1764: P3DPythonRun::xml_to_pyobj #probably ok
  38.  
  39. #./dtool/metalibs/dtoolconfig/pydtool.cxx:257: #pydtool.cxx is all generated code
  40. #./dtool/metalibs/dtoolconfig/pydtool.cxx:275:
  41. #./dtool/metalibs/dtoolconfig/pydtool.cxx:389:
  42. #./dtool/metalibs/dtoolconfig/pydtool.cxx:407:
  43. #./dtool/metalibs/dtoolconfig/pydtool.cxx:648:
  44. #./dtool/metalibs/dtoolconfig/pydtool.cxx:666:
  45. #./dtool/metalibs/dtoolconfig/pydtool.cxx:698:
  46. #./dtool/metalibs/dtoolconfig/pydtool.cxx:716:
  47. #./dtool/metalibs/dtoolconfig/pydtool.cxx:780:
  48. #./dtool/metalibs/dtoolconfig/pydtool.cxx:812:
  49. #./dtool/metalibs/dtoolconfig/pydtool.cxx:918:
  50. #./dtool/metalibs/dtoolconfig/pydtool.cxx:964:
  51. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1099:
  52. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1160:
  53. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1214:
  54. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1232:
  55. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1250:
  56. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1392:
  57. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1410:
  58. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1428:
  59. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1492:
  60. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1524:
  61. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1556:
  62. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1769:
  63. #./dtool/metalibs/dtoolconfig/pydtool.cxx:1788:
  64.  
  65. #./dtool/src/dtoolutil/executionEnvironment.cxx:278: ExecutionEnvironment::ns_get_environment_variable #is fine
  66. #./dtool/src/dtoolutil/executionEnvironment.cxx:279: ExecutionEnvironment::ns_get_environment_variable #is fine
  67. #./dtool/src/dtoolutil/executionEnvironment.cxx:282: ExecutionEnvironment::ns_get_environment_variable #is fine
  68. #./dtool/src/dtoolutil/executionEnvironment.cxx:284: ExecutionEnvironment::ns_get_environment_variable #is fine
  69. ./dtool/src/dtoolutil/filename.cxx:2013: Filename::scan_directory #this one is an issue, it even has a comment! :)
  70. ./dtool/src/dtoolutil/globPattern.cxx:139: GlobPattern::match_files #this one is an issue, it even has a comment! :)
  71.  
  72. # I'm guessing a huge portion of the problems are in interfaceMakerPython....
  73. #:write_module_class
  74. #the two below are causing the problems with writing bytes as names
  75. ./dtool/src/interrogate/interfaceMakerPythonNative.cxx:1791: int need_repr = NeedsAReprFunction(obj->_itype); #maybe add PyUnicode_check???
  76. ./dtool/src/interrogate/interfaceMakerPythonNative.cxx:1820: int need_str = NeedsAStrFunction(obj->_itype); #same issue as above
  77.  
  78. #InterfaceMakerPythonNative::write_function_instance
  79. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:2802: #not an issue
  80. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:2804:
  81. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:2819:
  82. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:2821:
  83. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:2838:
  84. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:2840: #as above
  85.  
  86. #InterfaceMakerPythonNative::pack_python_value
  87. ./dtool/src/interrogate/interfaceMakerPythonNative.cxx:3294: #could be an issue is_char_pointer
  88. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:3308: #this is FromWideChar... should check to make sure is NOT an issue
  89. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:3314: #as above, no #if PY_MAJOR_VERSION is used here so prob not an issue
  90. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:3324: #as above
  91. ./dtool/src/interrogate/interfaceMakerPythonNative.cxx:3337: #could be an issue return_expr does not seem safe is_const_ptr_to_basic_string_char
  92. ./dtool/src/interrogate/interfaceMakerPythonNative.cxx:3350: #could be an issue return_expr does not seem safe anything else that is_atomic_string
  93. ./dtool/src/interrogate/interfaceMakerPythonNative.cxx:3401: #could be an issue return_expr does not seem safe is_char_pointer and NOT atomic ***
  94. #./dtool/src/interrogate/interfaceMakerPythonNative.cxx:3415: #is from wchar, should be ok
  95. #./dtool/src/interrogate/interfaceMakerPythonObj.cxx:247: InterfaceMakerPythonObj::write_class_wrapper #just setting name should be ok
  96. ./dtool/src/interrogate/interfaceMakerPythonObj.cxx:579: InterfaceMakerPythonObj::pack_return_value # could be an issue, no guranttee on return_expr
  97. ./dtool/src/interrogate/interfaceMakerPythonObj.cxx:588: InterfaceMakerPythonObj::pack_return_value # could be an issue, no guranttee on return_expr
  98. ./dtool/src/interrogate/interfaceMakerPythonObj.cxx:629: InterfaceMakerPythonObj::pack_return_value # could be an issue, no guranttee on return_expr
  99. ./dtool/src/interrogate/interfaceMakerPythonSimple.cxx:475: InterfaceMakerPythonSimple::pack_return_value #return_expr issues is_char_pointer atomic
  100. #./dtool/src/interrogate/interfaceMakerPythonSimple.cxx:483: #ok is wchar
  101. ./dtool/src/interrogate/interfaceMakerPythonSimple.cxx:489: InterfaceMakerPythonSimple::pack_return_value #return_expr issues all other atomic strings
  102. ./dtool/src/interrogate/interfaceMakerPythonSimple.cxx:532: InterfaceMakerPythonSimple::pack_return_value #return_expr issues is_char_pointer -atomic
  103.  
  104. #./dtool/src/interrogatedb/py_panda.cxx:210: #safe, pulling straight from python __name__
  105. #./dtool/src/interrogatedb/py_panda.cxx:222: #safe, pulling straight from python __name__
  106. #./dtool/src/interrogatedb/py_panda.cxx:252: #safe, pulling straight from python __name__
  107. #./dtool/src/interrogatedb/py_panda.cxx:264: #safe, pulling straight from python __name__
  108.  
  109. #./dtool/src/pystub/pystub.cxx:143: #no impact
  110. #./dtool/src/pystub/pystub.cxx:144:
  111. #./dtool/src/pystub/pystub.cxx:145:
  112. #./dtool/src/pystub/pystub.cxx:146:
  113. #./dtool/src/pystub/pystub.cxx:147:
  114. #./dtool/src/pystub/pystub.cxx:148:
  115. #./dtool/src/pystub/pystub.cxx:149:
  116. #./dtool/src/pystub/pystub.cxx:150: #no impact
  117. #./dtool/src/pystub/pystub.cxx:307:
  118. #./dtool/src/pystub/pystub.cxx:308:
  119. #./dtool/src/pystub/pystub.cxx:309:
  120. #./dtool/src/pystub/pystub.cxx:310:
  121. #./dtool/src/pystub/pystub.cxx:311:
  122. #./dtool/src/pystub/pystub.cxx:312:
  123. #./dtool/src/pystub/pystub.cxx:313:
  124. #./dtool/src/pystub/pystub.cxx:314: #no impact for the whole block here
  125.  
  126.  
  127. #./panda/src/event/pythonTask.cxx:257: PythonTask::__setattr__ #ok, pulls from __repr__
  128. ./panda/src/event/pythonTask.cxx:276: PythonTask::__setattr__ #could be causing a problem if v is not a string but is bytes instead
  129. ./panda/src/event/pythonTask.cxx:326: PythonTask::__getattr__ #could definitely be a problem, calls get_name() which is suspect in my testing
  130. #./panda/src/event/pythonTask.cxx:426: PythonTask::do_python_task #might be ok? pulls from PyObject_ASCII should be fine
  131. #./panda/src/event/pythonTask.cxx:518: PythonTask::do_python_task #might be ok? pulls from PyObject_ASCII should be fine
  132. #./panda/src/event/pythonTask.cxx:646: PythonTask::call_owner_method #might be ok? pulls from PyObject_ASCII should be fine
  133.  
  134.  
  135. #for these two the Python type rule is ONLY that the key be a hashable type and the panda implementation also requires it be bufferable
  136. ./panda/src/pgraph/pandaNode_ext.cxx:223: Extension<PandaNode>::get_tag_keys #BROKEN: pass in b'\x80' as a key to set_tag
  137. ./panda/src/pgraph/pandaNode_ext.cxx:248: Extension<PandaNode>::get_python_tag_keys #BROKEN: pass in b'\x80' as a key to set_python_tag
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement