From: Andre Noll Date: Sun, 18 Nov 2007 19:49:56 +0000 (+0100) Subject: Add additional sanity checks to osl_get_rank(). X-Git-Tag: v0.3.0~113^2~4 X-Git-Url: http://git.tuebingen.mpg.de/?a=commitdiff_plain;h=c47aa3e188e0e51b4dfdf957a140177bfc03a8da;hp=f3a22620ec1091b6a56152eacd9fcf5560b7bf1d;p=paraslash.git Add additional sanity checks to osl_get_rank(). Check whether the riven rank is greater than zero and not greater than the number of rows in the table. --- diff --git a/osl.c b/osl.c index 5c806419..9843a020 100644 --- a/osl.c +++ b/osl.c @@ -2013,8 +2013,17 @@ int osl_get_nth_row(const struct osl_table *t, unsigned col_num, { struct osl_column *col; struct rb_node *node; - int ret = check_rbtree_col(t, col_num, &col); + unsigned num_rows; + int ret; + if (n == 0) + return -E_RB_KEY_NOT_FOUND; + ret = osl_get_num_rows(t, &num_rows); + if (ret < 0) + return ret; + if (n > num_rows) + return -E_RB_KEY_NOT_FOUND; + ret = check_rbtree_col(t, col_num, &col); if (ret < 0) return ret; node = rb_nth(col->rbtree.rb_node, n);