|  | @@ -1539,6 +1539,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |          /* Flag validation: currently allow no flags */
 | 
	
		
			
				|  |  |          if (op->flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_SEND_INITIAL_METADATA;
 | 
	
		
			
				|  |  |          req->data.send_metadata.count = op->data.send_initial_metadata.count;
 | 
	
		
			
				|  |  |          req->data.send_metadata.metadata =
 | 
	
	
		
			
				|  | @@ -1553,6 +1554,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |            return GRPC_CALL_ERROR_INVALID_MESSAGE;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_SEND_MESSAGE;
 | 
	
		
			
				|  |  |          req->data.send_message = op->data.send_message;
 | 
	
		
			
				|  |  |          req->flags = op->flags;
 | 
	
	
		
			
				|  | @@ -1564,6 +1566,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |            return GRPC_CALL_ERROR_NOT_ON_SERVER;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_SEND_CLOSE;
 | 
	
		
			
				|  |  |          req->flags = op->flags;
 | 
	
		
			
				|  |  |          break;
 | 
	
	
		
			
				|  | @@ -1574,6 +1577,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |            return GRPC_CALL_ERROR_NOT_ON_CLIENT;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_SEND_TRAILING_METADATA;
 | 
	
		
			
				|  |  |          req->flags = op->flags;
 | 
	
		
			
				|  |  |          req->data.send_metadata.count =
 | 
	
	
		
			
				|  | @@ -1581,6 +1585,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |          req->data.send_metadata.metadata =
 | 
	
		
			
				|  |  |              op->data.send_status_from_server.trailing_metadata;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_SEND_STATUS;
 | 
	
		
			
				|  |  |          req->data.send_status.code = op->data.send_status_from_server.status;
 | 
	
		
			
				|  |  |          req->data.send_status.details =
 | 
	
	
		
			
				|  | @@ -1590,6 +1595,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |                        op->data.send_status_from_server.status_details, 0)
 | 
	
		
			
				|  |  |                  : NULL;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_SEND_CLOSE;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case GRPC_OP_RECV_INITIAL_METADATA:
 | 
	
	
		
			
				|  | @@ -1599,6 +1605,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |            return GRPC_CALL_ERROR_NOT_ON_SERVER;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_RECV_INITIAL_METADATA;
 | 
	
		
			
				|  |  |          req->data.recv_metadata = op->data.recv_initial_metadata;
 | 
	
		
			
				|  |  |          req->data.recv_metadata->count = 0;
 | 
	
	
		
			
				|  | @@ -1608,6 +1615,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |          /* Flag validation: currently allow no flags */
 | 
	
		
			
				|  |  |          if (op->flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_RECV_MESSAGE;
 | 
	
		
			
				|  |  |          req->data.recv_message = op->data.recv_message;
 | 
	
		
			
				|  |  |          req->flags = op->flags;
 | 
	
	
		
			
				|  | @@ -1619,22 +1627,26 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |            return GRPC_CALL_ERROR_NOT_ON_SERVER;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_RECV_STATUS;
 | 
	
		
			
				|  |  |          req->flags = op->flags;
 | 
	
		
			
				|  |  |          req->data.recv_status.set_value = set_status_value_directly;
 | 
	
		
			
				|  |  |          req->data.recv_status.user_data = op->data.recv_status_on_client.status;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_RECV_STATUS_DETAILS;
 | 
	
		
			
				|  |  |          req->data.recv_status_details.details =
 | 
	
		
			
				|  |  |              op->data.recv_status_on_client.status_details;
 | 
	
		
			
				|  |  |          req->data.recv_status_details.details_capacity =
 | 
	
		
			
				|  |  |              op->data.recv_status_on_client.status_details_capacity;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_RECV_TRAILING_METADATA;
 | 
	
		
			
				|  |  |          req->data.recv_metadata =
 | 
	
		
			
				|  |  |              op->data.recv_status_on_client.trailing_metadata;
 | 
	
		
			
				|  |  |          req->data.recv_metadata->count = 0;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_RECV_CLOSE;
 | 
	
		
			
				|  |  |          finish_func = finish_batch_with_close;
 | 
	
		
			
				|  |  |          break;
 | 
	
	
		
			
				|  | @@ -1642,12 +1654,14 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
 | 
	
		
			
				|  |  |          /* Flag validation: currently allow no flags */
 | 
	
		
			
				|  |  |          if (op->flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_RECV_STATUS;
 | 
	
		
			
				|  |  |          req->flags = op->flags;
 | 
	
		
			
				|  |  |          req->data.recv_status.set_value = set_cancelled_value;
 | 
	
		
			
				|  |  |          req->data.recv_status.user_data =
 | 
	
		
			
				|  |  |              op->data.recv_close_on_server.cancelled;
 | 
	
		
			
				|  |  |          req = &reqs[out++];
 | 
	
		
			
				|  |  | +	if (out > GRPC_IOREQ_OP_COUNT) return GRPC_CALL_ERROR_BATCH_TOO_BIG;
 | 
	
		
			
				|  |  |          req->op = GRPC_IOREQ_RECV_CLOSE;
 | 
	
		
			
				|  |  |          finish_func = finish_batch_with_close;
 | 
	
		
			
				|  |  |          break;
 |