MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sysctl_sysctl_name2oid

Function sysctl_sysctl_name2oid

freebsd/kern/kern_sysctl.c:1318–1357  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1316}
1317
1318static int
1319sysctl_sysctl_name2oid(SYSCTL_HANDLER_ARGS)
1320{
1321 char *p;
1322 int error, oid[CTL_MAXNAME], len = 0;
1323 struct sysctl_oid *op = NULL;
1324 struct rm_priotracker tracker;
1325 char buf[32];
1326
1327 if (!req->newlen)
1328 return (ENOENT);
1329 if (req->newlen >= MAXPATHLEN) /* XXX arbitrary, undocumented */
1330 return (ENAMETOOLONG);
1331
1332 p = buf;
1333 if (req->newlen >= sizeof(buf))
1334 p = malloc(req->newlen+1, M_SYSCTL, M_WAITOK);
1335
1336 error = SYSCTL_IN(req, p, req->newlen);
1337 if (error) {
1338 if (p != buf)
1339 free(p, M_SYSCTL);
1340 return (error);
1341 }
1342
1343 p [req->newlen] = '\0';
1344
1345 SYSCTL_RLOCK(&tracker);
1346 error = name2oid(p, oid, &len, &op);
1347 SYSCTL_RUNLOCK(&tracker);
1348
1349 if (p != buf)
1350 free(p, M_SYSCTL);
1351
1352 if (error)
1353 return (error);
1354
1355 error = SYSCTL_OUT(req, oid, len * sizeof *oid);
1356 return (error);
1357}
1358
1359/*
1360 * XXXRW/JA: Shouldn't return name2oid data for nodes that we don't permit in

Callers

nothing calls this directly

Calls 3

mallocFunction · 0.85
freeFunction · 0.70
name2oidFunction · 0.70

Tested by

no test coverage detected