~ubuntu-branches/ubuntu/breezy/koffice/breezy-security

« back to all changes in this revision

Viewing changes to lib/kformula/kformuladocument.cc

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2005-10-11 14:49:50 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20051011144950-lwpngbifzp8nk0ds
Tags: 1:1.4.1-0ubuntu7
* SECURITY UPDATE: fix heap based buffer overflow in the RTF importer of KWord
* Opening specially crafted RTF files in KWord can cause
  execution of abitrary code.
* Add kubuntu_01_rtfimport_heap_overflow.diff
* References:
  CAN-2005-2971
  CESA-2005-005
  http://www.koffice.org/security/advisory-20051011-1.txt

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
#include <kglobal.h>
26
26
#include <kiconloader.h>
27
27
#include <klocale.h>
 
28
#include <ksimpleconfig.h>
28
29
#include <kstandarddirs.h>
29
30
 
30
31
#include <koDocument.h>
127
128
}
128
129
 
129
130
 
130
 
bool Document::loadXML( QDomDocument doc )
 
131
bool Document::loadXML( const QDomDocument& doc )
131
132
{
132
133
    //clear();
133
134
    QDomElement root = doc.documentElement();
163
164
    return formulae.count() > 0;
164
165
}
165
166
 
 
167
bool Document::loadOasis( const QDomDocument& doc )
 
168
{
 
169
   // ### TODO: not finished!
 
170
    KFormula::Container* formula = newFormula( 0 );
 
171
    return formula->loadMathML( doc, true );
 
172
}
 
173
 
166
174
bool Document::loadDocumentPart( QDomElement /*node*/ )
167
175
{
168
176
    return true;
181
189
}
182
190
 
183
191
 
184
 
QDomElement Document::saveDocumentPart( QDomDocument doc )
 
192
QDomElement Document::saveDocumentPart( QDomDocument& doc )
185
193
{
186
194
    QDomElement settings = doc.createElement( "FORMULASETTINGS" );
187
195
    return settings;
291
299
 
292
300
void Document::setEnabled( bool enabled )
293
301
{
294
 
    //kdDebug( DEBUGID ) << "Document::setEnabled " << enabled << endl;
295
 
    m_wrapper->getAddNegThinSpaceAction()->setEnabled( enabled );
296
 
    m_wrapper->getMakeGreekAction()->setEnabled( enabled );
297
 
    m_wrapper->getAddGenericUpperAction()->setEnabled( enabled );
298
 
    m_wrapper->getAddGenericLowerAction()->setEnabled( enabled );
299
 
    m_wrapper->getAddOverlineAction()->setEnabled( enabled );
300
 
    m_wrapper->getAddUnderlineAction()->setEnabled( enabled );
301
 
    m_wrapper->getRemoveEnclosingAction()->setEnabled( enabled );
302
 
    m_wrapper->getInsertSymbolAction()->setEnabled( enabled );
303
 
    m_wrapper->getAddThinSpaceAction()->setEnabled( enabled );
304
 
    m_wrapper->getAddMediumSpaceAction()->setEnabled( enabled );
305
 
    m_wrapper->getAddThickSpaceAction()->setEnabled( enabled );
306
 
    m_wrapper->getAddQuadSpaceAction()->setEnabled( enabled );
307
 
    m_wrapper->getAddBracketAction()->setEnabled( enabled );
308
 
    m_wrapper->getAddSBracketAction()->setEnabled( enabled );
309
 
    m_wrapper->getAddCBracketAction()->setEnabled( enabled );
310
 
    m_wrapper->getAddAbsAction()->setEnabled(enabled);
311
 
    m_wrapper->getAddFractionAction()->setEnabled( enabled );
312
 
    m_wrapper->getAddRootAction()->setEnabled( enabled );
313
 
    m_wrapper->getAddSumAction()->setEnabled( enabled );
314
 
    m_wrapper->getAddProductAction()->setEnabled( enabled );
315
 
    m_wrapper->getAddIntegralAction()->setEnabled( enabled );
316
 
    m_wrapper->getAddMatrixAction()->setEnabled( enabled );
317
 
    m_wrapper->getAddOneByTwoMatrixAction()->setEnabled( enabled );
318
 
    m_wrapper->getAddUpperLeftAction()->setEnabled( enabled );
319
 
    m_wrapper->getAddLowerLeftAction()->setEnabled( enabled );
320
 
    m_wrapper->getAddUpperRightAction()->setEnabled( enabled );
321
 
    m_wrapper->getAddLowerRightAction()->setEnabled( enabled );
322
 
    m_wrapper->getAppendColumnAction()->setEnabled( enabled );
323
 
    m_wrapper->getInsertColumnAction()->setEnabled( enabled );
324
 
    m_wrapper->getRemoveColumnAction()->setEnabled( enabled );
325
 
    m_wrapper->getAppendRowAction()->setEnabled( enabled );
326
 
    m_wrapper->getInsertRowAction()->setEnabled( enabled );
327
 
    m_wrapper->getRemoveRowAction()->setEnabled( enabled );
328
 
 
329
 
    if ( enabled ) {
330
 
        m_wrapper->getAddGenericUpperAction()->
331
 
            setShortcut( KShortcut( CTRL + Key_U ) );
332
 
        m_wrapper->getAddGenericLowerAction()->
333
 
            setShortcut( KShortcut( CTRL + Key_L ) );
334
 
        m_wrapper->getRemoveEnclosingAction()->
335
 
            setShortcut( KShortcut( CTRL + Key_R ) );
336
 
        m_wrapper->getMakeGreekAction()->
337
 
            setShortcut( KShortcut( CTRL + Key_G ) );
338
 
        m_wrapper->getInsertSymbolAction()->
339
 
            setShortcut( KShortcut( CTRL + Key_I ) );
340
 
    }
341
 
    else {
342
 
        m_wrapper->getAddGenericUpperAction()->setShortcut( KShortcut() );
343
 
        m_wrapper->getAddGenericLowerAction()->setShortcut( KShortcut() );
344
 
        m_wrapper->getRemoveEnclosingAction()->setShortcut( KShortcut() );
345
 
        m_wrapper->getMakeGreekAction()->setShortcut( KShortcut() );
346
 
        m_wrapper->getInsertSymbolAction()->setShortcut( KShortcut() );
347
 
    }
 
302
    m_wrapper->setEnabled( enabled );
348
303
}
349
304
 
350
305
 
392
347
{
393
348
    if ( m_hasActions ) {
394
349
        createActions( collection );
 
350
        enableMatrixActions( false );
395
351
    }
396
352
    setCommandStack( history );
397
353
}
403
359
    if ( m_ownHistory ) {
404
360
        delete m_history;
405
361
    }
 
362
 
 
363
    if ( m_hasActions )
 
364
    {
 
365
        m_config->setGroup("General");
 
366
        m_config->writeEntry("syntaxHighlighting", m_syntaxHighlightingAction->isChecked() );
 
367
    }
406
368
}
407
369
 
408
370
 
411
373
    m_document = document;
412
374
    m_document->introduceWrapper( this );
413
375
    initSymbolNamesAction();
 
376
    m_config->setGroup("General");
 
377
    if ( m_hasActions )
 
378
    {
 
379
        m_syntaxHighlightingAction->setChecked( m_config->readBoolEntry("syntaxHighlighting", true ) );
 
380
        if ( !m_syntaxHighlightingAction->isChecked() )
 
381
            toggleSyntaxHighlighting();
 
382
    }
 
383
    else if ( m_config->readBoolEntry("syntaxHighlighting", true ) )
 
384
    {
 
385
        m_document->m_contextStyle->setSyntaxHighlighting( true );
 
386
        // Only to notify all views. We don't expect to get new values.
 
387
        m_document->recalc();
 
388
    }
414
389
}
415
390
 
416
391
 
535
510
                                      collection, "formula_addlowerright");
536
511
 
537
512
    m_addGenericUpperAction = new KAction(i18n("Add Upper Index"),
 
513
                                      "gsup",
538
514
                                              /*CTRL + Key_U*/0,
539
515
                                      this, SLOT(addGenericUpperIndex()),
540
516
                                      collection, "formula_addupperindex");
541
517
    m_addGenericLowerAction = new KAction(i18n("Add Lower Index"),
 
518
                                      "gsub",
542
519
                                      0,
543
520
                                      this, SLOT(addGenericLowerIndex()),
544
521
                                      collection, "formula_addlowerindex");
1151
1128
}
1152
1129
 
1153
1130
 
 
1131
void DocumentWrapper::setEnabled( bool enabled )
 
1132
{
 
1133
    kdDebug( DEBUGID ) << "DocumentWrapper::setEnabled " << enabled << endl;
 
1134
    getAddNegThinSpaceAction()->setEnabled( enabled );
 
1135
    getMakeGreekAction()->setEnabled( enabled );
 
1136
    getAddGenericUpperAction()->setEnabled( enabled );
 
1137
    getAddGenericLowerAction()->setEnabled( enabled );
 
1138
    getAddOverlineAction()->setEnabled( enabled );
 
1139
    getAddUnderlineAction()->setEnabled( enabled );
 
1140
    getRemoveEnclosingAction()->setEnabled( enabled );
 
1141
    getInsertSymbolAction()->setEnabled( enabled );
 
1142
    getAddThinSpaceAction()->setEnabled( enabled );
 
1143
    getAddMediumSpaceAction()->setEnabled( enabled );
 
1144
    getAddThickSpaceAction()->setEnabled( enabled );
 
1145
    getAddQuadSpaceAction()->setEnabled( enabled );
 
1146
    getAddBracketAction()->setEnabled( enabled );
 
1147
    getAddSBracketAction()->setEnabled( enabled );
 
1148
    getAddCBracketAction()->setEnabled( enabled );
 
1149
    getAddAbsAction()->setEnabled(enabled);
 
1150
    getAddFractionAction()->setEnabled( enabled );
 
1151
    getAddRootAction()->setEnabled( enabled );
 
1152
    getAddSumAction()->setEnabled( enabled );
 
1153
    getAddProductAction()->setEnabled( enabled );
 
1154
    getAddIntegralAction()->setEnabled( enabled );
 
1155
    getAddMatrixAction()->setEnabled( enabled );
 
1156
    getAddOneByTwoMatrixAction()->setEnabled( enabled );
 
1157
    getAddUpperLeftAction()->setEnabled( enabled );
 
1158
    getAddLowerLeftAction()->setEnabled( enabled );
 
1159
    getAddUpperRightAction()->setEnabled( enabled );
 
1160
    getAddLowerRightAction()->setEnabled( enabled );
 
1161
    
 
1162
    getAddGenericUpperAction()->setEnabled( enabled );
 
1163
    getAddGenericLowerAction()->setEnabled( enabled );
 
1164
    
 
1165
 
 
1166
    if ( enabled ) {
 
1167
        getAddGenericUpperAction()->
 
1168
            setShortcut( KShortcut( CTRL + Key_U ) );
 
1169
        getAddGenericLowerAction()->
 
1170
            setShortcut( KShortcut( CTRL + Key_L ) );
 
1171
        getRemoveEnclosingAction()->
 
1172
            setShortcut( KShortcut( CTRL + Key_R ) );
 
1173
        getMakeGreekAction()->
 
1174
            setShortcut( KShortcut( CTRL + Key_G ) );
 
1175
        getInsertSymbolAction()->
 
1176
            setShortcut( KShortcut( CTRL + Key_I ) );
 
1177
    }
 
1178
    else {
 
1179
        getAddGenericUpperAction()->setShortcut( KShortcut() );
 
1180
        getAddGenericLowerAction()->setShortcut( KShortcut() );
 
1181
        getRemoveEnclosingAction()->setShortcut( KShortcut() );
 
1182
        getMakeGreekAction()->setShortcut( KShortcut() );
 
1183
        getInsertSymbolAction()->setShortcut( KShortcut() );
 
1184
    }
 
1185
}
 
1186
 
 
1187
void DocumentWrapper::enableMatrixActions( bool b)
 
1188
{
 
1189
    getAppendColumnAction()->setEnabled( b );
 
1190
    getInsertColumnAction()->setEnabled( b );
 
1191
    getRemoveColumnAction()->setEnabled( b );
 
1192
    getAppendRowAction()->setEnabled( b );
 
1193
    getInsertRowAction()->setEnabled( b );
 
1194
    getRemoveRowAction()->setEnabled( b );
 
1195
}
 
1196
 
1154
1197
void DocumentWrapper::updateConfig()
1155
1198
{
1156
1199
    m_syntaxHighlightingAction->