changelog of the current development status, as one or more of these problems
may have been fixed since this was written!
+28. The TFTP code is not portable and will fail on some architectures.
+
26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in
"system context" will make it use wrong(?) user name - at least when compared
to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=1281867
tftp_state_data_t *state;
int rc;
+ /*
+ * The TFTP code is not portable because it sends C structs directly over
+ * the wire. Since C gives compiler writers a wide latitude in padding and
+ * aligning structs, this fails on many architectures (e.g. ARM).
+ *
+ * The only portable way to fix this is to copy each struct item into a
+ * flat buffer and send the flat buffer instead of the struct. The
+ * alternative, trying to get the compiler to eliminate padding bytes
+ * within the struct, is a nightmare to maintain (each compiler does it
+ * differently), and is still not guaranteed to work because some
+ * architectures can't handle the resulting alignment.
+ *
+ * This check can be removed once the code has been fixed.
+ */
+ if(sizeof(struct tftp_packet) != 516) {
+ failf(conn->data, "tftp not supported on this architecture");
+ return CURLE_FAILED_INIT;
+ }
+
if((state = conn->proto.tftp = calloc(sizeof(tftp_state_data_t), 1))==NULL) {
return CURLE_OUT_OF_MEMORY;
}