Changes in kernel/generic/src/ipc/sysipc.c [f6bffee:228e490] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/sysipc.c
rf6bffee r228e490 248 248 /* The connection was accepted */ 249 249 phone_connect(phoneid, &answer->sender->answerbox); 250 /* Set 'task hash' as arg4 of response */251 IPC_SET_ARG4(answer->data, (sysarg_t) TASK);252 250 /* Set 'phone hash' as arg5 of response */ 253 251 IPC_SET_ARG5(answer->data, … … 426 424 case IPC_M_DATA_READ: { 427 425 size_t size = IPC_GET_ARG2(call->data); 428 if ( size <= 0)426 if ((size <= 0 || (size > DATA_XFER_LIMIT))) 429 427 return ELIMIT; 430 if (size > DATA_XFER_LIMIT) { 431 int flags = IPC_GET_ARG3(call->data); 432 if (flags & IPC_XF_RESTRICT) 433 IPC_SET_ARG2(call->data, DATA_XFER_LIMIT); 434 else 435 return ELIMIT; 436 } 428 437 429 break; 438 430 } … … 441 433 size_t size = IPC_GET_ARG2(call->data); 442 434 443 if (size > DATA_XFER_LIMIT) { 444 int flags = IPC_GET_ARG3(call->data); 445 if (flags & IPC_XF_RESTRICT) { 446 size = DATA_XFER_LIMIT; 447 IPC_SET_ARG2(call->data, size); 448 } else 449 return ELIMIT; 450 } 435 if (size > DATA_XFER_LIMIT) 436 return ELIMIT; 451 437 452 438 call->buffer = (uint8_t *) malloc(size, 0); … … 1117 1103 * 1118 1104 */ 1119 sysarg_t sys_ register_irq(inr_t inr, devno_t devno, sysarg_t imethod,1105 sysarg_t sys_ipc_register_irq(inr_t inr, devno_t devno, sysarg_t imethod, 1120 1106 irq_code_t *ucode) 1121 1107 { … … 1134 1120 * 1135 1121 */ 1136 sysarg_t sys_ unregister_irq(inr_t inr, devno_t devno)1122 sysarg_t sys_ipc_unregister_irq(inr_t inr, devno_t devno) 1137 1123 { 1138 1124 if (!(cap_get(TASK) & CAP_IRQ_REG))
Note:
See TracChangeset
for help on using the changeset viewer.