X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_nameval.c;h=4bdf4ed743a7195dca0e3af8ac7775801b96b42c;hp=e75411be9fb7dfef4e3f6866347a35cc88140881;hb=93e9fdf712264bc18bad8b249e8e908494b0f774;hpb=30531f82cc7712126b10f3b05e3b50e7577d0778 diff --git a/yaffs_nameval.c b/yaffs_nameval.c index e75411b..4bdf4ed 100644 --- a/yaffs_nameval.c +++ b/yaffs_nameval.c @@ -37,7 +37,8 @@ static int nval_find(const char *xb, int xb_size, const YCHAR *name, memcpy(&size, xb, sizeof(int)); while (size > 0 && (size < xb_size) && (pos + size < xb_size)) { - if (!strncmp((YCHAR *) (xb + pos + sizeof(int)), name, size)) { + if (!strncmp((YCHAR *) (xb + pos + sizeof(int)), + name, size)) { if (exist_size) *exist_size = size; return pos; @@ -146,6 +147,12 @@ int nval_get(const char *xb, int xb_size, const YCHAR * name, char *buf, pos++; size--; + /* If bsize is zero then this is a size query. + * Return the size, but don't copy. + */ + if (!bsize) + return size; + if (size <= bsize) { memcpy(buf, xb + pos, size); return size;