@@ -608,6 +608,12 @@ setBuiltins(ProfilerObject *pObj, int nvalue)
608608
609609PyObject * pystart_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
610610{
611+ if (size < 2 ) {
612+ PyErr_Format (PyExc_TypeError ,
613+ "_pystart_callback expected 2 arguments, got %zd" ,
614+ size );
615+ return NULL ;
616+ }
611617 PyObject * code = args [0 ];
612618 ptrace_enter_call ((PyObject * )self , (void * )code , (PyObject * )code );
613619
@@ -616,6 +622,12 @@ PyObject* pystart_callback(ProfilerObject* self, PyObject *const *args, Py_ssize
616622
617623PyObject * pyreturn_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
618624{
625+ if (size < 3 ) {
626+ PyErr_Format (PyExc_TypeError ,
627+ "_pyreturn_callback expected 3 arguments, got %zd" ,
628+ size );
629+ return NULL ;
630+ }
619631 PyObject * code = args [0 ];
620632 ptrace_leave_call ((PyObject * )self , (void * )code );
621633
@@ -651,6 +663,12 @@ PyObject* get_cfunc_from_callable(PyObject* callable, PyObject* self_arg, PyObje
651663
652664PyObject * ccall_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
653665{
666+ if (size < 4 ) {
667+ PyErr_Format (PyExc_TypeError ,
668+ "_ccall_callback expected 4 arguments, got %zd" ,
669+ size );
670+ return NULL ;
671+ }
654672 if (self -> flags & POF_BUILTINS ) {
655673 PyObject * callable = args [2 ];
656674 PyObject * self_arg = args [3 ];
@@ -669,6 +687,12 @@ PyObject* ccall_callback(ProfilerObject* self, PyObject *const *args, Py_ssize_t
669687
670688PyObject * creturn_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
671689{
690+ if (size < 4 ) {
691+ PyErr_Format (PyExc_TypeError ,
692+ "_creturn_callback expected 4 arguments, got %zd" ,
693+ size );
694+ return NULL ;
695+ }
672696 if (self -> flags & POF_BUILTINS ) {
673697 PyObject * callable = args [2 ];
674698 PyObject * self_arg = args [3 ];
0 commit comments