*/
snprintf(sourcepath, sizeof(sourcepath), "pg_tblspc/%u", tablespaceOid);
rllen =readlink(sourcepath, targetpath, sizeof(targetpath));
- if (rllen < 0 || rllen >= sizeof(targetpath))
+ if (rllen < 0)
ereport(ERROR,
(errmsg("could not read symbolic link \"%s\": %m", sourcepath)));
+ else if (rllen >= sizeof(targetpath))
+ ereport(ERROR,
+ (errmsg("symbolic link \"%s\" target is too long", sourcepath)));
targetpath[rllen] = '\0';
PG_RETURN_TEXT_P(cstring_to_text(targetpath));