Redo the URL parsing.

Have a pcap_parse_source routine that attempts to parse a string that
might be a URL or might just be a device, and that allocates strings for
the various components.

Use that in pcap_parsesrcstr().

This avoids using sscanf() (which causes warnings when compiled with
newer versions of MSVC, and which is a bit of a hackish way to parse
strings in any case), and also fixes the parsing of IPv6address as the
host (yes, they *can* contain alphabetic characters - the text format of
IPv6 addresses is made up of hex strings, so you can get a through f).

So, while we're at it, fix pcap_createsrcstr() to properly recognize
IPv6 addresses - just look for something containing colons, rather than
looking for something not containing letters.
1 file changed
tree: 9ef3b89964143ea9e0367f336f383bc30badd038
  1. .github/
  2. bpf/
  3. ChmodBPF/
  4. cmake/
  5. config/
  6. lbl/
  7. missing/
  8. msdos/
  9. pcap/
  10. rpcapd/
  11. SUNOS4/
  12. tests/
  13. Win32/
  14. .appveyor.yml
  15. .gitattributes
  16. .gitignore
  17. .travis-coverity-scan-build.sh
  18. .travis.yml
  19. aclocal.m4
  20. arcnet.h
  21. atmuni31.h
  22. bpf_dump.c
  23. bpf_image.c
  24. CHANGES
  25. chmod_bpf
  26. cmakeconfig.h.in
  27. CMakeLists.txt
  28. config.guess
  29. config.h.in
  30. config.sub
  31. configure
  32. configure.ac
  33. CONTRIBUTING
  34. CREDITS
  35. dlpisubs.c
  36. dlpisubs.h
  37. etherent.c
  38. ethertype.h
  39. extract.h
  40. fad-getad.c
  41. fad-gifc.c
  42. fad-glifc.c
  43. ftmacros.h
  44. funcattrs.h
  45. gen_version_c.sh
  46. gen_version_header.sh
  47. gencode.c
  48. gencode.h
  49. GenVersion.bat
  50. grammar.y
  51. ieee80211.h
  52. inet.c
  53. install-sh
  54. INSTALL.txt
  55. LICENSE
  56. llc.h
  57. Makefile-devel-adds
  58. Makefile.in
  59. mkdep
  60. nametoaddr.c
  61. nametoaddr.h
  62. nlpid.h
  63. optimize.c
  64. org.tcpdump.chmod_bpf.plist
  65. pcap-bpf.c
  66. pcap-bpf.h
  67. pcap-bt-linux.c
  68. pcap-bt-linux.h
  69. pcap-bt-monitor-linux.c
  70. pcap-bt-monitor-linux.h
  71. pcap-common.c
  72. pcap-common.h
  73. pcap-config.1
  74. pcap-config.in
  75. pcap-dag.c
  76. pcap-dag.h
  77. pcap-dbus.c
  78. pcap-dbus.h
  79. pcap-dlpi.c
  80. pcap-dos.c
  81. pcap-dos.h
  82. pcap-enet.c
  83. pcap-filter.manmisc.in
  84. pcap-int.h
  85. pcap-libdlpi.c
  86. pcap-linktype.manmisc.in
  87. pcap-linux.c
  88. pcap-namedb.h
  89. pcap-netfilter-linux.c
  90. pcap-netfilter-linux.h
  91. pcap-netmap.c
  92. pcap-netmap.h
  93. pcap-new.c
  94. pcap-nit.c
  95. pcap-null.c
  96. pcap-pf.c
  97. pcap-rdmasniff.c
  98. pcap-rdmasniff.h
  99. pcap-rpcap-int.h
  100. pcap-rpcap.c
  101. pcap-rpcap.h
  102. pcap-savefile.manfile.in
  103. pcap-septel.c
  104. pcap-septel.h
  105. pcap-sita.c
  106. pcap-sita.h
  107. pcap-sita.html
  108. pcap-snf.c
  109. pcap-snf.h
  110. pcap-snit.c
  111. pcap-snoop.c
  112. pcap-stdinc.h
  113. pcap-tc.c
  114. pcap-tc.h
  115. pcap-tstamp.manmisc.in
  116. pcap-types.h
  117. pcap-usb-linux.c
  118. pcap-usb-linux.h
  119. pcap-win32.c
  120. pcap.3pcap.in
  121. pcap.c
  122. pcap.h
  123. pcap_activate.3pcap
  124. pcap_breakloop.3pcap
  125. pcap_can_set_rfmon.3pcap
  126. pcap_close.3pcap
  127. pcap_compile.3pcap.in
  128. pcap_create.3pcap
  129. pcap_datalink.3pcap.in
  130. pcap_datalink_name_to_val.3pcap
  131. pcap_datalink_val_to_name.3pcap
  132. pcap_dump.3pcap
  133. pcap_dump_close.3pcap
  134. pcap_dump_file.3pcap
  135. pcap_dump_flush.3pcap
  136. pcap_dump_ftell.3pcap
  137. pcap_dump_open.3pcap.in
  138. pcap_file.3pcap
  139. pcap_fileno.3pcap
  140. pcap_findalldevs.3pcap
  141. pcap_freecode.3pcap
  142. pcap_get_selectable_fd.3pcap
  143. pcap_get_tstamp_precision.3pcap.in
  144. pcap_geterr.3pcap
  145. pcap_inject.3pcap
  146. pcap_is_swapped.3pcap
  147. pcap_lib_version.3pcap
  148. pcap_list_datalinks.3pcap.in
  149. pcap_list_tstamp_types.3pcap.in
  150. pcap_lookupdev.3pcap
  151. pcap_lookupnet.3pcap
  152. pcap_loop.3pcap
  153. pcap_major_version.3pcap
  154. pcap_next_ex.3pcap
  155. pcap_offline_filter.3pcap
  156. pcap_open_dead.3pcap.in
  157. pcap_open_live.3pcap
  158. pcap_open_offline.3pcap.in
  159. pcap_set_buffer_size.3pcap
  160. pcap_set_datalink.3pcap
  161. pcap_set_immediate_mode.3pcap
  162. pcap_set_promisc.3pcap
  163. pcap_set_protocol.3pcap
  164. pcap_set_rfmon.3pcap
  165. pcap_set_snaplen.3pcap
  166. pcap_set_timeout.3pcap
  167. pcap_set_tstamp_precision.3pcap.in
  168. pcap_set_tstamp_type.3pcap.in
  169. pcap_setdirection.3pcap
  170. pcap_setfilter.3pcap
  171. pcap_setnonblock.3pcap
  172. pcap_snapshot.3pcap
  173. pcap_stats.3pcap
  174. pcap_statustostr.3pcap
  175. pcap_strerror.3pcap
  176. pcap_tstamp_type_name_to_val.3pcap
  177. pcap_tstamp_type_val_to_name.3pcap
  178. pcap_version.h.in
  179. portability.h
  180. ppp.h
  181. README
  182. README.aix
  183. README.dag
  184. README.hpux
  185. README.linux
  186. README.macosx
  187. README.septel
  188. README.sita
  189. README.tru64
  190. README.Win32
  191. rpcap-protocol.h
  192. savefile.c
  193. scanner.l
  194. sf-pcap-ng.c
  195. sf-pcap-ng.h
  196. sf-pcap.c
  197. sf-pcap.h
  198. sockutils.c
  199. sockutils.h
  200. sunatmpos.h
  201. TODO
  202. VERSION