可変長配列を管理する構造体?

struct name {
  int namelen;
  char namestr[1];
};

ってのが,C FAQ に載っていますが,
この使用に関して危険性は無いのでしょうか?

素人目には,かなり恐い感じがするのですが.
namestr[xx] のアドレスが危険な領域である可能性は無いのでしょうか?