With 8 characters, the version number isn't null-terminated, so we
need to limit use to the available length in a couple of places.
Signed-off-by: Keith Packard <keithp@keithp.com>
#endif
#if HAS_VERSION
+#define _stringify(x) #x
+#define stringify(x) _stringify(x)
static void
version(void)
{
, (unsigned) ((uint32_t) AO_BOOT_APPLICATION_BOUND - (uint32_t) AO_BOOT_APPLICATION_BASE)
#endif
);
- printf("software-version %s\n", ao_version);
+ printf("software-version %." stringify(AO_MAX_VERSION) "s\n", ao_version);
}
#endif
for (;;);
}
-void
-ao_put_string(const char *s)
+static void
+ao_put_stringn(const char *s, int max)
{
char c;
- while ((c = *s++)) {
+ while (max--) {
+ c = *s++;
+ if (!c)
+ break;
if (c == '\n')
ao_usb_putchar('\r');
ao_usb_putchar(c);
}
}
+void
+ao_put_string(const char *s)
+{
+ ao_put_stringn(s, 65535);
+}
+
static void
ao_application(void)
{
ao_put_hex((uint32_t) AO_BOOT_APPLICATION_BASE);
ao_usb_putchar(' ');
ao_put_hex((uint32_t) AO_BOOT_APPLICATION_BOUND);
- ao_put_string("\nsoftware-version "); ao_put_string(ao_version);
+ ao_put_string("\nsoftware-version "); ao_put_stringn(ao_version, AO_MAX_VERSION);
ao_put_string("\n");
}