How about returning a pointer to an empty string (zero length) at some fixed address (eg. allocated statically), which is good enough for most callers, but provide a function or symbol that compares against that address?
This way you'd get an empty string back; if you care whether the property really exists you do a call to noProperty() or something like that. Regards, Phil