@@ -608,6 +608,12 @@ setBuiltins(ProfilerObject *pObj, int nvalue)
608
608
609
609
PyObject * pystart_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
610
610
{
611
+ if (size < 2 ) {
612
+ PyErr_Format (PyExc_TypeError ,
613
+ "_pystart_callback expected 2 arguments, got %zd" ,
614
+ size );
615
+ return NULL ;
616
+ }
611
617
PyObject * code = args [0 ];
612
618
ptrace_enter_call ((PyObject * )self , (void * )code , (PyObject * )code );
613
619
@@ -616,6 +622,12 @@ PyObject* pystart_callback(ProfilerObject* self, PyObject *const *args, Py_ssize
616
622
617
623
PyObject * pyreturn_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
618
624
{
625
+ if (size < 3 ) {
626
+ PyErr_Format (PyExc_TypeError ,
627
+ "_pyreturn_callback expected 3 arguments, got %zd" ,
628
+ size );
629
+ return NULL ;
630
+ }
619
631
PyObject * code = args [0 ];
620
632
ptrace_leave_call ((PyObject * )self , (void * )code );
621
633
@@ -651,6 +663,12 @@ PyObject* get_cfunc_from_callable(PyObject* callable, PyObject* self_arg, PyObje
651
663
652
664
PyObject * ccall_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
653
665
{
666
+ if (size < 4 ) {
667
+ PyErr_Format (PyExc_TypeError ,
668
+ "_ccall_callback expected 4 arguments, got %zd" ,
669
+ size );
670
+ return NULL ;
671
+ }
654
672
if (self -> flags & POF_BUILTINS ) {
655
673
PyObject * callable = args [2 ];
656
674
PyObject * self_arg = args [3 ];
@@ -669,6 +687,12 @@ PyObject* ccall_callback(ProfilerObject* self, PyObject *const *args, Py_ssize_t
669
687
670
688
PyObject * creturn_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
671
689
{
690
+ if (size < 4 ) {
691
+ PyErr_Format (PyExc_TypeError ,
692
+ "_creturn_callback expected 4 arguments, got %zd" ,
693
+ size );
694
+ return NULL ;
695
+ }
672
696
if (self -> flags & POF_BUILTINS ) {
673
697
PyObject * callable = args [2 ];
674
698
PyObject * self_arg = args [3 ];
0 commit comments