Revision 2f726488 nbd.c

b/nbd.c
404 404
	return ret;
405 405
}
406 406

  
407
int nbd_trip(BlockDriverState *bs, int csock, off_t size, uint64_t dev_offset, off_t *offset, bool readonly)
407
int nbd_trip(BlockDriverState *bs, int csock, off_t size, uint64_t dev_offset,
408
             off_t *offset, bool readonly, uint8_t *data, int data_size)
408 409
{
409
#ifndef _REENTRANT
410
	static uint8_t data[1024 * 1024]; // keep this off of the stack
411
#else
412
	uint8_t data[1024 * 1024];
413
#endif
414 410
	uint8_t buf[4 + 4 + 8 + 8 + 4];
415 411
	uint32_t magic;
416 412
	uint32_t type;
......
449 445
		return -1;
450 446
	}
451 447

  
452
	if (len > sizeof(data)) {
453
		LOG("len (%u) is larger than max len (%lu)",
454
		    len, (unsigned long)sizeof(data));
448
	if (len > data_size) {
449
		LOG("len (%u) is larger than max len (%u)",
450
		    len, data_size);
455 451
		errno = EINVAL;
456 452
		return -1;
457 453
	}

Also available in: Unified diff