arr2036/freeradius-server — comment on commit ffe221a7039f5c4447a43fe71a03976cecc95430
File: src/main/valuepair.c line 954
By alandekok:

if (((q && (q[1] >= '0') && q[1] <= '9')) ||
(!q && isupper((int) *p))) {

means the list is unknown if you have Attr:tag, OR no :, and the first character of the name is uppercase. All dictionary attributes have uppercase names (or nearly all).

Then....

if (q) {
*name = q + 1;
} else {
q = p + strlen(p);
*name = q;
}

to get the right length of q.