user_bootstrap.fbt_length = bootstrapp->fbt_length;
user_bootstrap.fbt_buffer = CAST_USER_ADDR_T(bootstrapp->fbt_buffer);
}
+
+ if ((user_bootstrapp->fbt_offset < 0) || (user_bootstrapp->fbt_offset > 1024) ||
+ (user_bootstrapp->fbt_length > 1024)) {
+ return EINVAL;
+ }
+
if (user_bootstrapp->fbt_offset + user_bootstrapp->fbt_length > 1024)
return EINVAL;
vm_offset_t a_pl_offset;
int a_flags;
int is_pageoutv2 = 0;
+ kern_return_t kret;
cp = VTOC(vp);
fp = VTOF(vp);
else {
request_flags = UPL_UBC_PAGEOUT | UPL_RET_ONLY_DIRTY;
}
- ubc_create_upl(vp, ap->a_f_offset, ap->a_size, &upl, &pl, request_flags);
+ kret = ubc_create_upl(vp, ap->a_f_offset, ap->a_size, &upl, &pl, request_flags);
- if (upl == (upl_t) NULL) {
+ if ((kret != KERN_SUCCESS) || (upl == (upl_t) NULL)) {
retval = EINVAL;
goto pageout_done;
}