Lines Matching refs:ptr

246     mDNSu8 *ptr = (mDNSu8 *)&x;  in swap32()  local
247 return (mDNSu32)((mDNSu32)ptr[0] << 24 | (mDNSu32)ptr[1] << 16 | (mDNSu32)ptr[2] << 8 | ptr[3]); in swap32()
252 mDNSu8 *ptr = (mDNSu8 *)&x; in swap16() local
253 return (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]); in swap16()
301 char *ptr = buffer; in GetRRDisplayString_rdb() local
409 for (ptr = buffer; *ptr; ptr++) if (*ptr < ' ') *ptr = '.'; in GetRRDisplayString_rdb()
618 const mDNSu8 *ptr; in CountLabels() local
619 for (ptr = d->c; *ptr; ptr = ptr + ptr[0] + 1) count++; in CountLabels()
640 mDNSu8 * ptr = name->c + DomainNameLength(name) - 1; // Find end of current name in AppendLiteralLabelString() local
642 const mDNSu8 *const lim2 = ptr + 1 + MAX_DOMAIN_LABEL; in AppendLiteralLabelString()
644 …mDNSu8 *lengthbyte = ptr++; // Record where the length is … in AppendLiteralLabelString()
646 while (*cstr && ptr < lim) *ptr++ = (mDNSu8)*cstr++; // Copy the data in AppendLiteralLabelString()
647 *lengthbyte = (mDNSu8)(ptr - lengthbyte - 1); // Fill in the length byte in AppendLiteralLabelString()
648 *ptr++ = 0; // Put the null root label on the end in AppendLiteralLabelString()
650 else return(ptr); // Success: return new value of ptr in AppendLiteralLabelString()
663 mDNSu8 * ptr = name->c + DomainNameLength(name) - 1; // Find end of current name in AppendDNSNameString() local
665 …while (*cstr && ptr < lim) // While more characters, and spac… in AppendDNSNameString()
667 …mDNSu8 *lengthbyte = ptr++; // Record where the length is going to… in AppendDNSNameString()
669 …while (*cstr && *cstr != '.' && ptr < lim) // While we have characters in the lab… in AppendDNSNameString()
685 *ptr++ = c; // Write the character in AppendDNSNameString()
688 if (ptr - lengthbyte - 1 > MAX_DOMAIN_LABEL) // If illegal label, abort in AppendDNSNameString()
690 *lengthbyte = (mDNSu8)(ptr - lengthbyte - 1); // Fill in the length byte in AppendDNSNameString()
693 …*ptr++ = 0; // Put the null root label on the … in AppendDNSNameString()
695 …else return(ptr); // Success: return new value of ptr in AppendDNSNameString()
706 mDNSu8 *ptr = name->c + DomainNameLength(name) - 1; in AppendDomainLabel() local
712 if (ptr + 1 + label->c[0] + 1 > name->c + MAX_DOMAIN_NAME) return(mDNSNULL); in AppendDomainLabel()
714 for (i=0; i<=label->c[0]; i++) *ptr++ = label->c[i]; // Copy the label data in AppendDomainLabel()
715 *ptr++ = 0; // Put the null root label on the end in AppendDomainLabel()
716 return(ptr); in AppendDomainLabel()
721 mDNSu8 * ptr = name->c + DomainNameLength(name) - 1; // Find end of current name in AppendDomainName() local
727 if (ptr + 1 + src[0] > lim) return(mDNSNULL); in AppendDomainName()
728 for (i=0; i<=src[0]; i++) *ptr++ = src[i]; in AppendDomainName()
729 *ptr = 0; // Put the null root label on the end in AppendDomainName()
732 return(ptr); in AppendDomainName()
743 mDNSu8 * ptr = label->c + 1; // Where we're putting it in MakeDomainLabelFromLiteralString() local
745 while (*cstr && ptr < limit) *ptr++ = (mDNSu8)*cstr++; // Copy the label in MakeDomainLabelFromLiteralString()
746 label->c[0] = (mDNSu8)(ptr - label->c - 1); // Set the length byte in MakeDomainLabelFromLiteralString()
763 mDNSexport char *ConvertDomainLabelToCString_withescape(const domainlabel *const label, char *ptr, … in ConvertDomainLabelToCString_withescape() argument
775 *ptr++ = esc; // Output escape character in ConvertDomainLabelToCString_withescape()
778 *ptr++ = esc; in ConvertDomainLabelToCString_withescape()
779 *ptr++ = (char) ('0' + (c / 100) ); in ConvertDomainLabelToCString_withescape()
780 *ptr++ = (char) ('0' + (c / 10) % 10); in ConvertDomainLabelToCString_withescape()
784 *ptr++ = (char)c; // Copy the character in ConvertDomainLabelToCString_withescape()
786 *ptr = 0; // Null-terminate the string in ConvertDomainLabelToCString_withescape()
787 return(ptr); // and return in ConvertDomainLabelToCString_withescape()
791 mDNSexport char *ConvertDomainNameToCString_withescape(const domainname *const name, char *ptr, cha… in ConvertDomainNameToCString_withescape() argument
796 …if (*src == 0) *ptr++ = '.'; // Special case: For root, just wr… in ConvertDomainNameToCString_withescape()
801 ptr = ConvertDomainLabelToCString_withescape((const domainlabel *)src, ptr, esc); in ConvertDomainNameToCString_withescape()
802 if (!ptr) return(mDNSNULL); in ConvertDomainNameToCString_withescape()
804 *ptr++ = '.'; // Write the dot after the label in ConvertDomainNameToCString_withescape()
807 *ptr++ = 0; // Null-terminate the string in ConvertDomainNameToCString_withescape()
808 return(ptr); // and return in ConvertDomainNameToCString_withescape()
820 mDNSu8 * ptr = &hostlabel->c[1]; in ConvertUTF8PstringToRFC1034HostLabel() local
828 if (ptr < lim) in ConvertUTF8PstringToRFC1034HostLabel()
830 if (mDNSValidHostChar(*src, (ptr > &hostlabel->c[1]), (src < end-1))) *ptr++ = *src; in ConvertUTF8PstringToRFC1034HostLabel()
831 else if (ptr > &hostlabel->c[1] && ptr[-1] != '-') *ptr++ = '-'; in ConvertUTF8PstringToRFC1034HostLabel()
835 while (ptr > &hostlabel->c[1] && ptr[-1] == '-') ptr--; // Truncate trailing '-' marks in ConvertUTF8PstringToRFC1034HostLabel()
836 hostlabel->c[0] = (mDNSu8)(ptr - &hostlabel->c[1]); in ConvertUTF8PstringToRFC1034HostLabel()
1292 const mDNSu8 *ptr = rdb->data; in RDataHashValue() local
1334 ptr += dlen; in RDataHashValue()
1345 sum += (((mDNSu32)(ptr[i])) << 8) | ptr[i+1]; in RDataHashValue()
1350 sum += ((mDNSu32)(ptr[i])) << 8; in RDataHashValue()
1826 const mDNSu8 *ptr = rd->u.txt.c; in ValidateRData() local
1828 while (ptr < end) ptr += 1 + ptr[0]; in ValidateRData()
1829 return (ptr == end); in ValidateRData()
1917 … mDNSu8 *ptr, const mDNSu8 *const limit, const domainname *const name) in putDomainNameAsLabels() argument
1923 const mDNSu8 *const searchlimit = ptr; in putDomainNameAsLabels()
1925 if (!ptr) { LogMsg("putDomainNameAsLabels %##s ptr is null", name->c); return(mDNSNULL); } in putDomainNameAsLabels()
1929 if (ptr >= limit) return(mDNSNULL); in putDomainNameAsLabels()
1953 … if (ptr+2 > limit) return(mDNSNULL); // If we don't have two bytes of space left, give up in putDomainNameAsLabels()
1954 *ptr++ = (mDNSu8)(0xC0 | (offset >> 8)); in putDomainNameAsLabels()
1955 *ptr++ = (mDNSu8)( offset & 0xFF); in putDomainNameAsLabels()
1956 return(ptr); in putDomainNameAsLabels()
1963 if (ptr + 1 + len >= limit) return(mDNSNULL); in putDomainNameAsLabels()
1964 *ptr++ = len; in putDomainNameAsLabels()
1965 for (i=0; i<len; i++) *ptr++ = *np++; in putDomainNameAsLabels()
1970 *ptr++ = 0; // Put the final root label in putDomainNameAsLabels()
1971 return(ptr); in putDomainNameAsLabels()
1976 mDNSlocal mDNSu8 *putVal16(mDNSu8 *ptr, mDNSu16 val) in putVal16() argument
1978 ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF); in putVal16()
1979 ptr[1] = (mDNSu8)((val ) & 0xFF); in putVal16()
1980 return ptr + sizeof(mDNSOpaque16); in putVal16()
1983 mDNSlocal mDNSu8 *putVal32(mDNSu8 *ptr, mDNSu32 val) in putVal32() argument
1985 ptr[0] = (mDNSu8)((val >> 24) & 0xFF); in putVal32()
1986 ptr[1] = (mDNSu8)((val >> 16) & 0xFF); in putVal32()
1987 ptr[2] = (mDNSu8)((val >> 8) & 0xFF); in putVal32()
1988 ptr[3] = (mDNSu8)((val ) & 0xFF); in putVal32()
1989 return ptr + sizeof(mDNSu32); in putVal32()
1995 mDNSexport mDNSu8 *putRData(const DNSMessage *const msg, mDNSu8 *ptr, const mDNSu8 *const limit, co… in putRData() argument
2002 if (ptr + 4 > limit) return(mDNSNULL); in putRData()
2003 *ptr++ = rdb->ipv4.b[0]; in putRData()
2004 *ptr++ = rdb->ipv4.b[1]; in putRData()
2005 *ptr++ = rdb->ipv4.b[2]; in putRData()
2006 *ptr++ = rdb->ipv4.b[3]; in putRData()
2007 return(ptr); in putRData()
2012 case kDNSType_DNAME: return(putDomainNameAsLabels(msg, ptr, limit, &rdb->name)); in putRData()
2014 case kDNSType_SOA: ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->soa.mname); in putRData()
2015 if (!ptr) return(mDNSNULL); in putRData()
2016 ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->soa.rname); in putRData()
2017 if (!ptr || ptr + 20 > limit) return(mDNSNULL); in putRData()
2018 ptr = putVal32(ptr, rdb->soa.serial); in putRData()
2019 ptr = putVal32(ptr, rdb->soa.refresh); in putRData()
2020 ptr = putVal32(ptr, rdb->soa.retry); in putRData()
2021 ptr = putVal32(ptr, rdb->soa.expire); in putRData()
2022 ptr = putVal32(ptr, rdb->soa.min); in putRData()
2023 return(ptr); in putRData()
2032 case kDNSType_DHCID: if (ptr + rr->rdlength > limit) return(mDNSNULL); in putRData()
2033 mDNSPlatformMemCopy(ptr, rdb->data, rr->rdlength); in putRData()
2034 return(ptr + rr->rdlength); in putRData()
2039 case kDNSType_KX: if (ptr + 3 > limit) return(mDNSNULL); in putRData()
2040 ptr = putVal16(ptr, rdb->mx.preference); in putRData()
2041 return(putDomainNameAsLabels(msg, ptr, limit, &rdb->mx.exchange)); in putRData()
2043 case kDNSType_RP: ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->rp.mbox); in putRData()
2044 if (!ptr) return(mDNSNULL); in putRData()
2045 ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->rp.txt); in putRData()
2046 return(ptr); in putRData()
2048 case kDNSType_PX: if (ptr + 5 > limit) return(mDNSNULL); in putRData()
2049 ptr = putVal16(ptr, rdb->px.preference); in putRData()
2050 ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->px.map822); in putRData()
2051 if (!ptr) return(mDNSNULL); in putRData()
2052 ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->px.mapx400); in putRData()
2053 return(ptr); in putRData()
2057 if (ptr + sizeof(rdb->ipv6) > limit) return(mDNSNULL); in putRData()
2058 mDNSPlatformMemCopy(ptr, &rdb->ipv6, sizeof(rdb->ipv6)); in putRData()
2059 return(ptr + sizeof(rdb->ipv6)); in putRData()
2061 case kDNSType_SRV: if (ptr + 7 > limit) return(mDNSNULL); in putRData()
2062 *ptr++ = (mDNSu8)(rdb->srv.priority >> 8); in putRData()
2063 *ptr++ = (mDNSu8)(rdb->srv.priority & 0xFF); in putRData()
2064 *ptr++ = (mDNSu8)(rdb->srv.weight >> 8); in putRData()
2065 *ptr++ = (mDNSu8)(rdb->srv.weight & 0xFF); in putRData()
2066 *ptr++ = rdb->srv.port.b[0]; in putRData()
2067 *ptr++ = rdb->srv.port.b[1]; in putRData()
2068 return(putDomainNameAsLabels(msg, ptr, limit, &rdb->srv.target)); in putRData()
2076 if (ptr + len > limit) in putRData()
2084 ptr = putVal16(ptr, opt->opt); in putRData()
2085 ptr = putVal16(ptr, (mDNSu16)space - 4); in putRData()
2089 ptr = putVal16(ptr, opt->u.llq.vers); in putRData()
2090 ptr = putVal16(ptr, opt->u.llq.llqOp); in putRData()
2091 ptr = putVal16(ptr, opt->u.llq.err); in putRData()
2092 mDNSPlatformMemCopy(ptr, opt->u.llq.id.b, 8); // 8-byte id in putRData()
2093 ptr += 8; in putRData()
2094 ptr = putVal32(ptr, opt->u.llq.llqlease); in putRData()
2097 ptr = putVal32(ptr, opt->u.updatelease); in putRData()
2100 *ptr++ = opt->u.owner.vers; in putRData()
2101 *ptr++ = opt->u.owner.seq; in putRData()
2102 …mDNSPlatformMemCopy(ptr, opt->u.owner.HMAC.b, 6); // 6-byte Host identifi… in putRData()
2103 ptr += 6; in putRData()
2106 …mDNSPlatformMemCopy(ptr, opt->u.owner.IMAC.b, 6); // 6-byte interface MAC in putRData()
2107 ptr += 6; in putRData()
2110 … mDNSPlatformMemCopy(ptr, opt->u.owner.password.b, space - DNSOpt_OwnerData_ID_Wake_Space); in putRData()
2111 ptr += space - DNSOpt_OwnerData_ID_Wake_Space; in putRData()
2116 *ptr++ = opt->u.tracer.platf; in putRData()
2117 ptr = putVal32(ptr, opt->u.tracer.mDNSv); in putRData()
2121 return ptr; in putRData()
2138 mDNSu8 *save = ptr; in putRData()
2157 ptr = putDomainNameAsLabels(msg, ptr, limit, rr->name); in putRData()
2158 …if (!ptr) { LogInfo("putRData: Can't put name, Length %d, record %##s", limit - save, rr->name->c)… in putRData()
2161 …if (ptr + 2 + i > limit) { LogInfo("putRData: Can't put window, Length %d, i %d, record %##s", lim… in putRData()
2162 *ptr++ = 0; in putRData()
2163 *ptr++ = (mDNSu8)i; in putRData()
2164 for (j=0; j<i; j++) *ptr++ = nsec[j]; in putRData()
2166 return ptr; in putRData()
2190ptr + rr->rdlength > limit) { LogMsg("putRData: NSEC rdlength beyond limit %##s (%s), ptr %p, rdle… in putRData()
2193 mDNSPlatformMemCopy(ptr, rdb->data, rr->rdlength); in putRData()
2194 return(ptr + rr->rdlength); in putRData()
2199 if (ptr + rr->rdlength > limit) return(mDNSNULL); in putRData()
2200 mDNSPlatformMemCopy(ptr, rdb->data, rr->rdlength); in putRData()
2201 return(ptr + rr->rdlength); in putRData()
2207 mDNSexport mDNSu8 *PutResourceRecordTTLWithLimit(DNSMessage *const msg, mDNSu8 *ptr, mDNSu16 *count, in PutResourceRecordTTLWithLimit() argument
2220 return(ptr); in PutResourceRecordTTLWithLimit()
2223 if (!ptr) in PutResourceRecordTTLWithLimit()
2231 ptr = putDomainNameAsLabels(msg, ptr, limit, rr->name); in PutResourceRecordTTLWithLimit()
2233 if (!ptr || ptr + 10 >= limit) in PutResourceRecordTTLWithLimit()
2238 DM_NAME_PARAM(rr->name), DNSTypeName(rr->rrtype), (long)(limit - ptr)); in PutResourceRecordTTLWithLimit()
2241 ptr[0] = (mDNSu8)(rr->rrtype >> 8); in PutResourceRecordTTLWithLimit()
2242 ptr[1] = (mDNSu8)(rr->rrtype & 0xFF); in PutResourceRecordTTLWithLimit()
2243 ptr[2] = (mDNSu8)(rr->rrclass >> 8); in PutResourceRecordTTLWithLimit()
2244 ptr[3] = (mDNSu8)(rr->rrclass & 0xFF); in PutResourceRecordTTLWithLimit()
2245 ptr[4] = (mDNSu8)((ttl >> 24) & 0xFF); in PutResourceRecordTTLWithLimit()
2246 ptr[5] = (mDNSu8)((ttl >> 16) & 0xFF); in PutResourceRecordTTLWithLimit()
2247 ptr[6] = (mDNSu8)((ttl >> 8) & 0xFF); in PutResourceRecordTTLWithLimit()
2248 ptr[7] = (mDNSu8)( ttl & 0xFF); in PutResourceRecordTTLWithLimit()
2251 endofrdata = putRData(rdatacompressionbase, ptr+10, limit, rr); in PutResourceRecordTTLWithLimit()
2257 DM_NAME_PARAM(rr->name), DNSTypeName(rr->rrtype), (long)(limit - ptr - 10)); in PutResourceRecordTTLWithLimit()
2263 actualLength = (mDNSu16)(endofrdata - ptr - 10); in PutResourceRecordTTLWithLimit()
2264 ptr[8] = (mDNSu8)(actualLength >> 8); in PutResourceRecordTTLWithLimit()
2265 ptr[9] = (mDNSu8)(actualLength & 0xFF); in PutResourceRecordTTLWithLimit()
2280 mDNSlocal mDNSu8 *putEmptyResourceRecord(DNSMessage *const msg, mDNSu8 *ptr, const mDNSu8 *const li… in putEmptyResourceRecord() argument
2282 ptr = putDomainNameAsLabels(msg, ptr, limit, rr->resrec.name); in putEmptyResourceRecord()
2283 if (!ptr || ptr + 10 > limit) return(mDNSNULL); // If we're out-of-space, return mDNSNULL in putEmptyResourceRecord()
2284 ptr[0] = (mDNSu8)(rr->resrec.rrtype >> 8); // Put type in putEmptyResourceRecord()
2285 ptr[1] = (mDNSu8)(rr->resrec.rrtype & 0xFF); in putEmptyResourceRecord()
2286 ptr[2] = (mDNSu8)(rr->resrec.rrclass >> 8); // Put class in putEmptyResourceRecord()
2287 ptr[3] = (mDNSu8)(rr->resrec.rrclass & 0xFF); in putEmptyResourceRecord()
2288 ptr[4] = ptr[5] = ptr[6] = ptr[7] = 0; // TTL is zero in putEmptyResourceRecord()
2289 ptr[8] = ptr[9] = 0; // RDATA length is zero in putEmptyResourceRecord()
2291 return(ptr + 10); in putEmptyResourceRecord()
2294 mDNSexport mDNSu8 *putQuestion(DNSMessage *const msg, mDNSu8 *ptr, const mDNSu8 *const limit, const… in putQuestion() argument
2296 ptr = putDomainNameAsLabels(msg, ptr, limit, name); in putQuestion()
2297 … if (!ptr || ptr+4 >= limit) return(mDNSNULL); // If we're out-of-space, return mDNSNULL in putQuestion()
2298 ptr[0] = (mDNSu8)(rrtype >> 8); in putQuestion()
2299 ptr[1] = (mDNSu8)(rrtype & 0xFF); in putQuestion()
2300 ptr[2] = (mDNSu8)(rrclass >> 8); in putQuestion()
2301 ptr[3] = (mDNSu8)(rrclass & 0xFF); in putQuestion()
2303 return(ptr+4); in putQuestion()
2307 mDNSexport mDNSu8 *putZone(DNSMessage *const msg, mDNSu8 *ptr, mDNSu8 *limit, const domainname *zon… in putZone() argument
2309 ptr = putDomainNameAsLabels(msg, ptr, limit, zone); in putZone()
2310 if (!ptr || ptr + 4 > limit) return mDNSNULL; // If we're out-of-space, return NULL in putZone()
2311 *ptr++ = (mDNSu8)(kDNSType_SOA >> 8); in putZone()
2312 *ptr++ = (mDNSu8)(kDNSType_SOA & 0xFF); in putZone()
2313 *ptr++ = zoneClass.b[0]; in putZone()
2314 *ptr++ = zoneClass.b[1]; in putZone()
2316 return ptr; in putZone()
2320 …NotInUse(const domainname *const name, DNSMessage *const msg, mDNSu8 *const ptr, mDNSu8 *const end) in putPrereqNameNotInUse() argument
2327 return putEmptyResourceRecord(msg, ptr, end, &msg->h.mDNS_numPrereqs, &prereq); in putPrereqNameNotInUse()
2331 mDNSexport mDNSu8 *putDeletionRecord(DNSMessage *msg, mDNSu8 *ptr, ResourceRecord *rr) in putDeletionRecord() argument
2336 ptr = PutResourceRecordTTLJumbo(msg, ptr, &msg->h.mDNS_numUpdates, rr, 0); in putDeletionRecord()
2338 return ptr; in putDeletionRecord()
2342 mDNSexport mDNSu8 *putDeletionRecordWithLimit(DNSMessage *msg, mDNSu8 *ptr, ResourceRecord *rr, mDN… in putDeletionRecordWithLimit() argument
2347 ptr = PutResourceRecordTTLWithLimit(msg, ptr, &msg->h.mDNS_numUpdates, rr, 0, limit); in putDeletionRecordWithLimit()
2349 return ptr; in putDeletionRecordWithLimit()
2352 mDNSexport mDNSu8 *putDeleteRRSetWithLimit(DNSMessage *msg, mDNSu8 *ptr, const domainname *name, mD… in putDeleteRRSetWithLimit() argument
2356 ptr = putDomainNameAsLabels(msg, ptr, limit, name); in putDeleteRRSetWithLimit()
2357 if (!ptr || ptr + 10 >= limit) return mDNSNULL; // If we're out-of-space, return mDNSNULL in putDeleteRRSetWithLimit()
2358 ptr[0] = (mDNSu8)(rrtype >> 8); in putDeleteRRSetWithLimit()
2359 ptr[1] = (mDNSu8)(rrtype & 0xFF); in putDeleteRRSetWithLimit()
2360 ptr[2] = (mDNSu8)(class >> 8); in putDeleteRRSetWithLimit()
2361 ptr[3] = (mDNSu8)(class & 0xFF); in putDeleteRRSetWithLimit()
2362 ptr[4] = ptr[5] = ptr[6] = ptr[7] = 0; // zero ttl in putDeleteRRSetWithLimit()
2363 ptr[8] = ptr[9] = 0; // zero rdlength/rdata in putDeleteRRSetWithLimit()
2366 return ptr + 10; in putDeleteRRSetWithLimit()
2370 mDNSexport mDNSu8 *putDeleteAllRRSets(DNSMessage *msg, mDNSu8 *ptr, const domainname *name) in putDeleteAllRRSets() argument
2376 ptr = putDomainNameAsLabels(msg, ptr, limit, name); in putDeleteAllRRSets()
2377 if (!ptr || ptr + 10 >= limit) return mDNSNULL; // If we're out-of-space, return mDNSNULL in putDeleteAllRRSets()
2378 ptr[0] = (mDNSu8)(rrtype >> 8); in putDeleteAllRRSets()
2379 ptr[1] = (mDNSu8)(rrtype & 0xFF); in putDeleteAllRRSets()
2380 ptr[2] = (mDNSu8)(class >> 8); in putDeleteAllRRSets()
2381 ptr[3] = (mDNSu8)(class & 0xFF); in putDeleteAllRRSets()
2382 ptr[4] = ptr[5] = ptr[6] = ptr[7] = 0; // zero ttl in putDeleteAllRRSets()
2383 ptr[8] = ptr[9] = 0; // zero rdlength/rdata in putDeleteAllRRSets()
2386 return ptr + 10; in putDeleteAllRRSets()
2390 mDNSexport mDNSu8 *putUpdateLease(DNSMessage *msg, mDNSu8 *ptr, mDNSu32 lease) in putUpdateLease() argument
2399 ptr = PutResourceRecordTTLJumbo(msg, ptr, &msg->h.numAdditionals, &rr.resrec, 0); in putUpdateLease()
2400 if (!ptr) { LogMsg("ERROR: putUpdateLease - PutResourceRecordTTL"); return mDNSNULL; } in putUpdateLease()
2401 return ptr; in putUpdateLease()
2405 mDNSexport mDNSu8 *putUpdateLeaseWithLimit(DNSMessage *msg, mDNSu8 *ptr, mDNSu32 lease, mDNSu8 *lim… in putUpdateLeaseWithLimit() argument
2414 ptr = PutResourceRecordTTLWithLimit(msg, ptr, &msg->h.numAdditionals, &rr.resrec, 0, limit); in putUpdateLeaseWithLimit()
2415 …if (!ptr) { LogMsg("ERROR: putUpdateLeaseWithLimit - PutResourceRecordTTLWithLimit"); return mDNSN… in putUpdateLeaseWithLimit()
2416 return ptr; in putUpdateLeaseWithLimit()
2455 mDNSexport const mDNSu8 *skipDomainName(const DNSMessage *const msg, const mDNSu8 *ptr, const mDNSu… in skipDomainName() argument
2459 if (ptr < (mDNSu8*)msg || ptr >= end) in skipDomainName()
2464 const mDNSu8 len = *ptr++; // Read length of this label in skipDomainName()
2465 if (len == 0) return(ptr); // If length is zero, that means this name is complete in skipDomainName()
2468 …case 0x00: if (ptr + len >= end) // Remember: expect at least one more byte… in skipDomainName()
2472 ptr += len; in skipDomainName()
2478 case 0xC0: return(ptr+1); in skipDomainName()
2484 mDNSexport const mDNSu8 *getDomainName(const DNSMessage *const msg, const mDNSu8 *ptr, const mDNSu8… in getDomainName() argument
2491 if (ptr < (mDNSu8*)msg || ptr >= end) in getDomainName()
2500 const mDNSu8 len = *ptr++; // Read length of this label in getDomainName()
2505 …case 0x00: if (ptr + len >= end) // Remember: expect at least one more byte for the roo… in getDomainName()
2510 for (i=0; i<len; i++) *np++ = *ptr++; in getDomainName()
2519 case 0xC0: if (ptr >= end) in getDomainName()
2521 offset = (mDNSu16)((((mDNSu16)(len & 0x3F)) << 8) | *ptr++); in getDomainName()
2522 …if (!nextbyte) nextbyte = ptr; // Record where we got to before we started following … in getDomainName()
2523 ptr = (mDNSu8 *)msg + offset; in getDomainName()
2524 if (ptr < (mDNSu8*)msg || ptr >= end) in getDomainName()
2526 if (*ptr & 0xC0) in getDomainName()
2533 else return(ptr); in getDomainName()
2536 mDNSexport const mDNSu8 *skipResourceRecord(const DNSMessage *msg, const mDNSu8 *ptr, const mDNSu8 … in skipResourceRecord() argument
2540 ptr = skipDomainName(msg, ptr, end); in skipResourceRecord()
2541 if (!ptr) { debugf("skipResourceRecord: Malformed RR name"); return(mDNSNULL); } in skipResourceRecord()
2543 …if (ptr + 10 > end) { debugf("skipResourceRecord: Malformed RR -- no type/class/ttl/len!"); return… in skipResourceRecord()
2544 pktrdlength = (mDNSu16)((mDNSu16)ptr[8] << 8 | ptr[9]); in skipResourceRecord()
2545 ptr += 10; in skipResourceRecord()
2546 …if (ptr + pktrdlength > end) { debugf("skipResourceRecord: RDATA exceeds end of packet"); return(m… in skipResourceRecord()
2548 return(ptr + pktrdlength); in skipResourceRecord()
2606 mDNSexport mDNSBool SetRData(const DNSMessage *const msg, const mDNSu8 *ptr, const mDNSu8 *end, Res… in SetRData() argument
2616 rdb->ipv4.b[0] = ptr[0]; in SetRData()
2617 rdb->ipv4.b[1] = ptr[1]; in SetRData()
2618 rdb->ipv4.b[2] = ptr[2]; in SetRData()
2619 rdb->ipv4.b[3] = ptr[3]; in SetRData()
2634 ptr = getDomainName(msg, ptr, end, &rdb->name); in SetRData()
2638 if (!AssignDomainNameWithLimit(&rdb->name, (domainname *)ptr, end)) in SetRData()
2642 ptr += DomainNameLength(&rdb->name); in SetRData()
2644 if (ptr != end) in SetRData()
2654 ptr = getDomainName(msg, ptr, end, &rdb->soa.mname); in SetRData()
2658 if (!AssignDomainNameWithLimit(&rdb->soa.mname, (domainname *)ptr, end)) in SetRData()
2662 ptr += DomainNameLength(&rdb->soa.mname); in SetRData()
2664 if (!ptr) in SetRData()
2671 ptr = getDomainName(msg, ptr, end, &rdb->soa.rname); in SetRData()
2675 if (!AssignDomainNameWithLimit(&rdb->soa.rname, (domainname *)ptr, end)) in SetRData()
2679 ptr += DomainNameLength(&rdb->soa.rname); in SetRData()
2681 if (!ptr) in SetRData()
2686 if (ptr + 0x14 != end) in SetRData()
2691 …rdb->soa.serial = (mDNSs32) ((mDNSs32)ptr[0x00] << 24 | (mDNSs32)ptr[0x01] << 16 | (mDNSs32)ptr[0… in SetRData()
2692 …rdb->soa.refresh = (mDNSu32) ((mDNSu32)ptr[0x04] << 24 | (mDNSu32)ptr[0x05] << 16 | (mDNSu32)ptr[0… in SetRData()
2693 …rdb->soa.retry = (mDNSu32) ((mDNSu32)ptr[0x08] << 24 | (mDNSu32)ptr[0x09] << 16 | (mDNSu32)ptr[0… in SetRData()
2694 …rdb->soa.expire = (mDNSu32) ((mDNSu32)ptr[0x0C] << 24 | (mDNSu32)ptr[0x0D] << 16 | (mDNSu32)ptr[0… in SetRData()
2695 …rdb->soa.min = (mDNSu32) ((mDNSu32)ptr[0x10] << 24 | (mDNSu32)ptr[0x11] << 16 | (mDNSu32)ptr[0… in SetRData()
2702 if (end <= ptr || rdlength != (mDNSu32)(end - ptr)) in SetRData()
2709 const mDNSu8 *currentPtr = ptr; in SetRData()
2731 mDNSPlatformMemCopy(rdb->data, ptr, rdlength); in SetRData()
2743 mDNSPlatformMemCopy(rdb->data, ptr, rdlength); in SetRData()
2753 rdb->mx.preference = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]); in SetRData()
2754 ptr += 2; in SetRData()
2757 ptr = getDomainName(msg, ptr, end, &rdb->mx.exchange); in SetRData()
2761 if (!AssignDomainNameWithLimit(&rdb->mx.exchange, (domainname *)ptr, end)) in SetRData()
2765 ptr += DomainNameLength(&rdb->mx.exchange); in SetRData()
2767 if (ptr != end) in SetRData()
2779 ptr = getDomainName(msg, ptr, end, &rdb->rp.mbox); in SetRData()
2783 if (!AssignDomainNameWithLimit(&rdb->rp.mbox, (domainname *)ptr, end)) in SetRData()
2787 ptr += DomainNameLength(&rdb->rp.mbox); in SetRData()
2789 if (!ptr) in SetRData()
2796 ptr = getDomainName(msg, ptr, end, &rdb->rp.txt); in SetRData()
2800 if (!AssignDomainNameWithLimit(&rdb->rp.txt, (domainname *)ptr, end)) in SetRData()
2804 ptr += DomainNameLength(&rdb->rp.txt); in SetRData()
2806 if (ptr != end) in SetRData()
2817 rdb->px.preference = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]); in SetRData()
2818 ptr += 2; in SetRData()
2821 ptr = getDomainName(msg, ptr, end, &rdb->px.map822); in SetRData()
2825 if (!AssignDomainNameWithLimit(&rdb->px.map822, (domainname *)ptr, end)) in SetRData()
2829 ptr += DomainNameLength(&rdb->px.map822); in SetRData()
2831 if (!ptr) in SetRData()
2838 ptr = getDomainName(msg, ptr, end, &rdb->px.mapx400); in SetRData()
2842 if (!AssignDomainNameWithLimit(&rdb->px.mapx400, (domainname *)ptr, end)) in SetRData()
2846 ptr += DomainNameLength(&rdb->px.mapx400); in SetRData()
2848 if (ptr != end) in SetRData()
2858 mDNSPlatformMemCopy(&rdb->ipv6, ptr, sizeof(rdb->ipv6)); in SetRData()
2865 rdb->srv.priority = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]); in SetRData()
2866 rdb->srv.weight = (mDNSu16)((mDNSu16)ptr[2] << 8 | ptr[3]); in SetRData()
2867 rdb->srv.port.b[0] = ptr[4]; in SetRData()
2868 rdb->srv.port.b[1] = ptr[5]; in SetRData()
2869 ptr += 6; in SetRData()
2872 ptr = getDomainName(msg, ptr, end, &rdb->srv.target); in SetRData()
2876 if (!AssignDomainNameWithLimit(&rdb->srv.target, (domainname *)ptr, end)) in SetRData()
2880 ptr += DomainNameLength(&rdb->srv.target); in SetRData()
2882 if (ptr != end) in SetRData()
2893 const mDNSu8 *orig = ptr; in SetRData()
2903 ptr += 4; in SetRData()
2906 len = *ptr + 1; in SetRData()
2907 ptr += len; in SetRData()
2908 if (ptr >= end) in SetRData()
2915 len = *ptr + 1; in SetRData()
2916 ptr += len; in SetRData()
2917 if (ptr >= end) in SetRData()
2924 len = *ptr + 1; in SetRData()
2925 ptr += len; in SetRData()
2926 if (ptr >= end) in SetRData()
2932 savelen = (int)(ptr - orig); in SetRData()
2939 ptr = getDomainName(msg, ptr, end, &name); in SetRData()
2943 if (!AssignDomainNameWithLimit(&name, (domainname *)ptr, end)) in SetRData()
2947 ptr += DomainNameLength(&name); in SetRData()
2949 if (ptr != end) in SetRData()
2971 while ((ptr < end) && ((dataend - ((const mDNSu8 *)opt)) >= ((mDNSs32)sizeof(*opt)))) in SetRData()
2974 if (ptr + 4 > end) { LogInfo("SetRData: OPT RDATA ptr + 4 > end"); goto fail; } in SetRData()
2975 opt->opt = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]); in SetRData()
2976 opt->optlen = (mDNSu16)((mDNSu16)ptr[2] << 8 | ptr[3]); in SetRData()
2977 ptr += 4; in SetRData()
2978 … if (ptr + opt->optlen > end) { LogInfo("SetRData: ptr + opt->optlen > end"); goto fail; } in SetRData()
2984 opt->u.llq.vers = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]); in SetRData()
2985 opt->u.llq.llqOp = (mDNSu16)((mDNSu16)ptr[2] << 8 | ptr[3]); in SetRData()
2986 opt->u.llq.err = (mDNSu16)((mDNSu16)ptr[4] << 8 | ptr[5]); in SetRData()
2987 mDNSPlatformMemCopy(opt->u.llq.id.b, ptr+6, 8); in SetRData()
2988 …opt->u.llq.llqlease = (mDNSu32) ((mDNSu32)ptr[14] << 24 | (mDNSu32)ptr[15] << 16 | (mDNSu32)ptr[16… in SetRData()
2997 …opt->u.updatelease = (mDNSu32) ((mDNSu32)ptr[0] << 24 | (mDNSu32)ptr[1] << 16 | (mDNSu32)ptr[2] <<… in SetRData()
3006 opt->u.owner.vers = ptr[0]; in SetRData()
3007 opt->u.owner.seq = ptr[1]; in SetRData()
3008 … mDNSPlatformMemCopy(opt->u.owner.HMAC.b, ptr+2, 6); // 6-byte MAC address in SetRData()
3009 … mDNSPlatformMemCopy(opt->u.owner.IMAC.b, ptr+2, 6); // 6-byte MAC address in SetRData()
3013 … mDNSPlatformMemCopy(opt->u.owner.IMAC.b, ptr+8, 6); // 6-byte MAC address in SetRData()
3017 …mDNSPlatformMemCopy(opt->u.owner.password.b, ptr+14, opt->optlen - (DNSOpt_OwnerData_ID_Wake_Space… in SetRData()
3025 opt->u.tracer.platf = ptr[0]; in SetRData()
3026 …opt->u.tracer.mDNSv = (mDNSu32) ((mDNSu32)ptr[1] << 24 | (mDNSu32)ptr[2] << 16 | (mDNSu32)ptr[3]… in SetRData()
3037 ptr += currentopt->optlen; in SetRData()
3040 if (ptr != end) { LogInfo("SetRData: Malformed OptRdata"); goto fail; } in SetRData()
3048 const mDNSu8 *orig = ptr; in SetRData()
3053 ptr = getDomainName(msg, ptr, end, &name); in SetRData()
3057 if (!AssignDomainNameWithLimit(&name, (domainname *)ptr, end)) in SetRData()
3061 ptr += DomainNameLength(&name); in SetRData()
3063 if (!ptr) in SetRData()
3075 len -= (ptr - orig); in SetRData()
3077 bmap = ptr; in SetRData()
3078 ptr = SanityCheckBitMap(bmap, end, len); in SetRData()
3079 if (!ptr) in SetRData()
3081 if (ptr != end) in SetRData()
3112 ptr = getDomainName(msg, ptr, end, &name); in SetRData()
3116 if (!AssignDomainNameWithLimit(&name, (domainname *)ptr, end)) in SetRData()
3120 ptr += DomainNameLength(&name); in SetRData()
3122 if (!ptr || ptr >= end) in SetRData()
3128 rlen = (int)(end - ptr); in SetRData()
3137 mDNSPlatformMemCopy(rdb->data + dlen, ptr, rlen); in SetRData()
3149 mDNSPlatformMemCopy(rdb->data, ptr, rdlength); in SetRData()
3157 …const mDNSu8 *GetLargeResourceRecord(mDNS *const m, const DNSMessage *const msg, const mDNSu8 *ptr, in GetLargeResourceRecord() argument
3189ptr = getDomainName(msg, ptr, end, &largecr->namestorage); // Will bail out correctly if ptr … in GetLargeResourceRecord()
3190 if (!ptr) { debugf("GetLargeResourceRecord: Malformed RR name"); return(mDNSNULL); } in GetLargeResourceRecord()
3193 …if (ptr + 10 > end) { debugf("GetLargeResourceRecord: Malformed RR -- no type/class/ttl/len!"); re… in GetLargeResourceRecord()
3195 rr->resrec.rrtype = (mDNSu16) ((mDNSu16)ptr[0] << 8 | ptr[1]); in GetLargeResourceRecord()
3196 rr->resrec.rrclass = (mDNSu16)(((mDNSu16)ptr[2] << 8 | ptr[3]) & kDNSClass_Mask); in GetLargeResourceRecord()
3197 …rec.rroriginalttl = (mDNSu32) ((mDNSu32)ptr[4] << 24 | (mDNSu32)ptr[5] << 16 | (mDNSu32)ptr[6]… in GetLargeResourceRecord()
3202 pktrdlength = (mDNSu16)((mDNSu16)ptr[8] << 8 | ptr[9]); in GetLargeResourceRecord()
3206 if (ptr[2] & (kDNSClass_UniqueRRSet >> 8) || !InterfaceID) in GetLargeResourceRecord()
3208 ptr += 10; in GetLargeResourceRecord()
3209 …if (ptr + pktrdlength > end) { debugf("GetLargeResourceRecord: RDATA exceeds end of packet"); retu… in GetLargeResourceRecord()
3210 …end = ptr + pktrdlength; // Adjust end to indicate the end of the rdata for this resource r… in GetLargeResourceRecord()
3231 else if (!SetRData(msg, ptr, end, &rr->resrec, pktrdlength)) in GetLargeResourceRecord()
3255 mDNSexport const mDNSu8 *skipQuestion(const DNSMessage *msg, const mDNSu8 *ptr, const mDNSu8 *end) in skipQuestion() argument
3257 ptr = skipDomainName(msg, ptr, end); in skipQuestion()
3258 …if (!ptr) { debugf("skipQuestion: Malformed domain name in DNS question section"); return(mDNSNULL… in skipQuestion()
3259 …if (ptr+4 > end) { debugf("skipQuestion: Malformed DNS question section -- no query type and class… in skipQuestion()
3260 return(ptr+4); in skipQuestion()
3263 mDNSexport const mDNSu8 *getQuestion(const DNSMessage *msg, const mDNSu8 *ptr, const mDNSu8 *end, c… in getQuestion() argument
3269 ptr = getDomainName(msg, ptr, end, &question->qname); in getQuestion()
3270 if (!ptr) { debugf("Malformed domain name in DNS question section"); return(mDNSNULL); } in getQuestion()
3271 …if (ptr+4 > end) { debugf("Malformed DNS question section -- no query type and class!"); return(mD… in getQuestion()
3274 question->qtype = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]); // Get type in getQuestion()
3275 question->qclass = (mDNSu16)((mDNSu16)ptr[2] << 8 | ptr[3]); // and class in getQuestion()
3276 return(ptr+4); in getQuestion()
3282 const mDNSu8 *ptr = msg->data; in LocateAnswers() local
3283 for (i = 0; i < msg->h.numQuestions && ptr; i++) ptr = skipQuestion(msg, ptr, end); in LocateAnswers()
3284 return(ptr); in LocateAnswers()
3290 const mDNSu8 *ptr = LocateAnswers(msg, end); in LocateAuthorities() local
3291 for (i = 0; i < msg->h.numAnswers && ptr; i++) ptr = skipResourceRecord(msg, ptr, end); in LocateAuthorities()
3292 return(ptr); in LocateAuthorities()
3298 const mDNSu8 *ptr = LocateAuthorities(msg, end); in LocateAdditionals() local
3299 for (i = 0; i < msg->h.numAuthorities; i++) ptr = skipResourceRecord(msg, ptr, end); in LocateAdditionals()
3300 return (ptr); in LocateAdditionals()
3306 const mDNSu8 *ptr = LocateAdditionals(msg, end); in LocateOptRR() local
3312 for (i = 0; ptr && i < msg->h.numAdditionals; i++) in LocateOptRR()
3314 … if (ptr + DNSOpt_Header_Space + minsize <= end && // Make sure we have 11+minsize bytes of data in LocateOptRR()
3315 ptr[0] == 0 && // Name must be root label in LocateOptRR()
3316 ptr[1] == (kDNSType_OPT >> 8 ) && // rrtype OPT in LocateOptRR()
3317 ptr[2] == (kDNSType_OPT & 0xFF) && in LocateOptRR()
3318 ((mDNSu16)ptr[9] << 8 | (mDNSu16)ptr[10]) >= (mDNSu16)minsize) in LocateOptRR()
3319 return(ptr); in LocateOptRR()
3321 ptr = skipResourceRecord(msg, ptr, end); in LocateOptRR()
3332 const mDNSu8 *ptr = LocateOptRR(msg, end, DNSOpt_LLQData_Space); in GetLLQOptData() local
3333 if (ptr) in GetLLQOptData()
3335 ptr = GetLargeResourceRecord(m, msg, ptr, end, 0, kDNSRecordTypePacketAdd, &m->rec); in GetLLQOptData()
3336 …if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative) return(&m->rec.r.resrec.rda… in GetLLQOptData()
3344 const mDNSu8 *ptr = LocateOptRR(msg, end, DNSOpt_LeaseData_Space); in GetPktLease() local
3345 if (ptr) in GetPktLease()
3347 ptr = GetLargeResourceRecord(m, msg, ptr, end, 0, kDNSRecordTypePacketAdd, &m->rec); in GetPktLease()
3348 …if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && m->rec.r.resrec.rrtype ==… in GetPktLease()
3388 mDNSexport void mDNS_snprintf_add(char **ptr, const char *lim, const char *fmt, ...) in mDNS_snprintf_add() argument
3392 char *const dst = *ptr; in mDNS_snprintf_add()
3400 *ptr = dst + n; in mDNS_snprintf_add()
3417 const mDNSu8 *ptr = msg->data; in DNSMessageDumpToLog() local
3429 ptr = getDomainName(msg, ptr, end, name); in DNSMessageDumpToLog()
3430 if (!ptr) goto exit; in DNSMessageDumpToLog()
3432 if ((end - ptr) < 4) goto exit; in DNSMessageDumpToLog()
3433 qtype = ReadField16(&ptr[0]); in DNSMessageDumpToLog()
3434 qclass = ReadField16(&ptr[2]); in DNSMessageDumpToLog()
3435 ptr += 4; in DNSMessageDumpToLog()
3456 ptr = getDomainName(msg, ptr, end, name); in DNSMessageDumpToLog()
3457 if (!ptr) goto exit; in DNSMessageDumpToLog()
3459 if ((end - ptr) < 10) goto exit; in DNSMessageDumpToLog()
3460 rrtype = ReadField16(&ptr[0]); in DNSMessageDumpToLog()
3461 rrclass = ReadField16(&ptr[2]); in DNSMessageDumpToLog()
3462 ttl = ReadField32(&ptr[4]); in DNSMessageDumpToLog()
3463 rdlength = ReadField16(&ptr[8]); in DNSMessageDumpToLog()
3464 ptr += 10; in DNSMessageDumpToLog()
3466 if ((end - ptr) < rdlength) goto exit; in DNSMessageDumpToLog()
3467 rdata = ptr; in DNSMessageDumpToLog()
3496 ptr = getDomainName(msg, rdata, end, name); in DNSMessageDumpToLog()
3497 if (!ptr) goto exit; in DNSMessageDumpToLog()
3510 ptr = getDomainName(msg, rdata, end, mname); in DNSMessageDumpToLog()
3511 if (!ptr) goto exit; in DNSMessageDumpToLog()
3513 ptr = getDomainName(msg, ptr, end, rname); in DNSMessageDumpToLog()
3514 if (!ptr) goto exit; in DNSMessageDumpToLog()
3516 if ((end - ptr) < 20) goto exit; in DNSMessageDumpToLog()
3517 serial = ReadField32(&ptr[0]); in DNSMessageDumpToLog()
3518 refresh = ReadField32(&ptr[4]); in DNSMessageDumpToLog()
3519 retry = ReadField32(&ptr[8]); in DNSMessageDumpToLog()
3520 expire = ReadField32(&ptr[12]); in DNSMessageDumpToLog()
3521 minimum = ReadField32(&ptr[16]); in DNSMessageDumpToLog()
3535 ptr = rdata + rdlength; in DNSMessageDumpToLog()
4284 va_list ptr; in mDNS_snprintf() local
4285 va_start(ptr,fmt); in mDNS_snprintf()
4286 length = mDNS_vsnprintf(sbuffer, buflen, fmt, ptr); in mDNS_snprintf()
4287 va_end(ptr); in mDNS_snprintf()
4305 const mDNSu8 * ptr; in GetReverseIPv6Addr() local
4313 ptr = name->c; in GetReverseIPv6Addr()
4318 …if (*ptr++ != 1) return (mDNSfalse); // If this label's length is not 1, then f… in GetReverseIPv6Addr()
4319 c = *ptr++; // Get label byte. in GetReverseIPv6Addr()
4336 if (!SameDomainName((const domainname *)ptr, kReverseIPv6Domain)) return (mDNSfalse); in GetReverseIPv6Addr()