From 0e8fd182deb37cdba972c43ee738bd82948cf9fa Mon Sep 17 00:00:00 2001 From: Nimrod Gileadi Date: Thu, 4 Aug 2022 09:58:42 -0700 Subject: [PATCH] Ensure that mjModel->nbody is never zero. nbody is already checked to be non-negative, but various pieces of code assume it's nonzero (because there's always a world body). PiperOrigin-RevId: 465339241 Change-Id: I38ce3764074d03bf9a703aa490964c1eb83cc1da --- src/engine/engine_io.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/engine/engine_io.c b/src/engine/engine_io.c index f6023c8b..010ea6a7 100644 --- a/src/engine/engine_io.c +++ b/src/engine/engine_io.c @@ -462,6 +462,13 @@ mjModel* mj_makeModel(int nq, int nv, int nu, int na, int nbody, int njnt, MJMODEL_INTS; #undef X + // nbody should always be positive + if (m->nbody == 0) { + mju_warning("Invalid model: nbody == 0"); + mj_deleteModel(m); + return 0; + } + // compute buffer size m->nbuffer = 0; #define X(type, name, nr, nc) \