← Back to team overview

linuxdcpp-team team mailing list archive

[Bug 541548] Re: Bad NMDC validation messes up LinuxDC++ chat formatting

 

** Tags added: ui
** Tags removed: gui

** Changed in: dcplusplus
       Status: New => Won't Fix

** Changed in: linuxdcpp
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of
Dcplusplus-team, which is subscribed to DC++.
https://bugs.launchpad.net/bugs/541548

Title:
  Bad NMDC validation messes up LinuxDC++ chat formatting

Status in DC++:
  Won't Fix
Status in Linux DC++:
  Fix Released

Bug description:
  Seen at least on one hub out in the wild, which terminated
  actions/emotes in chat with \0 instead of proper |. E.g. Hub commands
  sent with '+me is going to lose his mind with this' were sent out by
  hub as * razzloss is going to his mind with this\0 The ClientListener
  Status message fired from this then contained this line and the next
  commands send by the hub until valid termination character was found.

  Windows clients apparently behaved as everything went fine (since no-
  one hadn't bothered to fix the problem and they saw the messages). So
  I'd imagine Windows chat messages are strcpy'd at some point, so that
  they end at correct place (and won't output the following commands to
  chat).

  LinuxDC++ on the otherhand passes the length of the string from the
  fired StatusMessage to gtk_text_buffer_insert, which then spews bunch
  of utf8 validation errors to console and doesn't actually add anything
  to the chat. After this nick tags are applied by LinuxDC++ so random
  text on the previous line gets italicized.

  So how do we fix this? At minimum the italicizing should be corrected,
  but should some validation be added to dcpp, so that messages like
  this won't get up to the GUI level?

  Quick fix which will show the emote line correctly is to change the
  len parameter passed to gtk_text_buffer_insert to -1, so that it will
  use only the null terminated part of the message.

  edit: DC++ core version used was 0.75 (also happened with released
  linuxdcpp with 0.698 core)



References