1547 if (error != 0)
1548 return (error);
1549 } else {
1550 len = strlen(sp) + 1;
1551 if (len > STK_AVAIL(args))
1552 return (E2BIG);
1553 bcopy(sp, args->stk_strp, len);
1554 }
1555
1556 args->stk_strp += len;
1557
1558 return (0);
1559 }
1560
1561 /*
1562 * Add a fixed size byte array to the stack (only from kernel space).
1563 */
1564 static int
1565 stk_byte_add(uarg_t *args, const uint8_t *sp, size_t len)
1566 {
1567 int error;
1568
1569 if (STK_AVAIL(args) < sizeof (int))
1570 return (E2BIG);
1571 *--args->stk_offp = args->stk_strp - args->stk_base;
1572
1573 if (len > STK_AVAIL(args))
1574 return (E2BIG);
1575 bcopy(sp, args->stk_strp, len);
1576
1577 args->stk_strp += len;
1578
1579 return (0);
1580 }
1581
1582 static int
1583 stk_getptr(uarg_t *args, char *src, char **dst)
1584 {
1585 int error;
1586
1587 if (args->from_model == DATAMODEL_NATIVE) {
1588 ulong_t ptr;
|
1547 if (error != 0)
1548 return (error);
1549 } else {
1550 len = strlen(sp) + 1;
1551 if (len > STK_AVAIL(args))
1552 return (E2BIG);
1553 bcopy(sp, args->stk_strp, len);
1554 }
1555
1556 args->stk_strp += len;
1557
1558 return (0);
1559 }
1560
1561 /*
1562 * Add a fixed size byte array to the stack (only from kernel space).
1563 */
1564 static int
1565 stk_byte_add(uarg_t *args, const uint8_t *sp, size_t len)
1566 {
1567 if (STK_AVAIL(args) < sizeof (int))
1568 return (E2BIG);
1569 *--args->stk_offp = args->stk_strp - args->stk_base;
1570
1571 if (len > STK_AVAIL(args))
1572 return (E2BIG);
1573 bcopy(sp, args->stk_strp, len);
1574
1575 args->stk_strp += len;
1576
1577 return (0);
1578 }
1579
1580 static int
1581 stk_getptr(uarg_t *args, char *src, char **dst)
1582 {
1583 int error;
1584
1585 if (args->from_model == DATAMODEL_NATIVE) {
1586 ulong_t ptr;
|